Immer IllegalStateException auf den button klicken
Klick auf eine Schaltfläche, um die Migration auf eine andere Tätigkeit, die app abstürzt und das Protokoll zeigt:
java.lang.IllegalStateException: Could not execute method for android:onClick
Debuggen, ich habe versucht, zu migrieren, um eine leere Aktivität, noch zeigt es den gleichen Fehler. Kann nicht verstehen, warum!
Dies ist meine Haupttätigkeit java-Datei und zeigt es Fehler in host()'s Absicht-Funktion:
package com.example.unholyalliance.infinitestream;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void host(View v)
{
Intent i = new Intent(this,Host.class);
try
{
startActivity(i);
}catch(IllegalStateException e)
{
Context context = getApplicationContext();
CharSequence text = e.getMessage();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
public void search(View v)
{
}
}
This is my Host.java file:
import android.content.Context;
import android.net.nsd.NsdManager;
import android.net.nsd.NsdServiceInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.IOException;
import java.net.ServerSocket;
public class Host extends AppCompatActivity {
public String mServiceName="Stream";
ServerSocket mServerSocket=null;
NsdManager.RegistrationListener mRegistrationListener=null;
private NsdManager mNsdManager=null;
int port=9000;
TextView service_status = (TextView) findViewById(R.id.textView1);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_host);
mNsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
try {
initializeServerSocket();
} catch (IOException e) {
e.printStackTrace();
}
}
public void initializeServerSocket() throws IOException {
//Initialize a server socket on the next available port.
mServerSocket = new ServerSocket(0);
//Store the chosen port.
port = mServerSocket.getLocalPort();
registerService(port);
}
public void registerService(int port) {
//Create the NsdServiceInfo object, and populate it.
NsdServiceInfo serviceInfo = new NsdServiceInfo();
//The name is subject to change based on conflicts
//with other services advertised on the same network.
serviceInfo.setServiceName("Stream");
serviceInfo.setServiceType("_http._tcp.");
serviceInfo.setPort(port);
mNsdManager.registerService(
serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
initializeRegistrationListener();
}
public void initializeRegistrationListener() {
mRegistrationListener = new NsdManager.RegistrationListener() {
@Override
public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) {
//Save the service name. Android may have changed it in order to
//resolve a conflict, so update the name you initially requested
//with the name Android actually used.
mServiceName = NsdServiceInfo.getServiceName();
service_status.setText("Success");
}
@Override
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
//Registration failed! Put debugging code here to determine why.
service_status.setText("Registration Failed!");
}
@Override
public void onServiceUnregistered(NsdServiceInfo arg0) {
//Service has been unregistered. This only happens when you call
//NsdManager.unregisterService() and pass in this listener.
service_status.setText("Registration not done");
}
@Override
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
//Unregistration failed. Put debugging code here to determine why.
service_status.setText("Unregistration failed");
}
};
}
}
Volle Stack-Trace:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:4278)
at android.view.View$PerformClick.run(View.java:17429)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5099)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4278)
at android.view.View$PerformClick.run(View.java:17429)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5099)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.unholyalliance.infinitestream/com.example.unholyalliance.infinitestream.Host}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1633)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1425)
at android.app.Activity.startActivityForResult(Activity.java:3370)
at android.app.Activity.startActivityForResult(Activity.java:3331)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:843)
at android.app.Activity.startActivity(Activity.java:3566)
at android.app.Activity.startActivity(Activity.java:3534)
at com.example.unholyalliance.infinitestream.MainActivity.host(MainActivity.java:23)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4278)
at android.view.View$PerformClick.run(View.java:17429)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5099)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
at dalvik.system.NativeStart.main(Native Method)
activity_main.xml Datei:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.unholyalliance.infinitestream.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Host"
android:id="@+id/host_button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="104dp"
android:clickable="true"
android:onClick="host" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Search"
android:id="@+id/search_button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="search"
android:clickable="true" />
</RelativeLayout>
post
post stacktrace.
In der Tat, was Georg schrieb, ist wahr, aber es sollte nicht trow IllegalStateException auf die MainActivity. Also ich glaube nicht, das ist dann sein problem...
activity_main.xml
post stacktrace.
In der Tat, was Georg schrieb, ist wahr, aber es sollte nicht trow IllegalStateException auf die MainActivity. Also ich glaube nicht, das ist dann sein problem...
InformationsquelleAutor yash1996 | 2016-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den wichtigsten Teil des full-stack-trace finden Sie hier:
Es scheint, Sie haben nicht diese
Host
Aktivität erklärt in Ihrer manifest-Datei. ÖffnenAndroidManifest.xml
und überprüfen, oder fügen Sie den folgenden:Auch sicher, dass Sie das Problem zu beheben in
Host
zuerst nur erklären, IhreTextView
und dann weisen Sie den Wert inonCreate()
nachsetContentView()
.Du bist herzlich willkommen. Froh, dass ich helfen konnte.
InformationsquelleAutor George Mulligan
Stellen Sie sicher, dass Ihre
onClick
in der Schaltfläche Ansicht inactivity_main.xml
ist wie dieseandroid:onClick="host"
Beispiel:
Die app ist caching IllegalStateException die app nicht Abstürzen, wenn es einen Fehler innerhalb der Methode " host ()".
die app wirft nicht Zwischenspeichern.
Ich meine, Es wird behandelt, es hier catch(IllegalStateException e) wenn innerhalb der host().
yeah...meine activity_main.xml ist genau so, wie Sie gesagt haben.Keine Probleme.
InformationsquelleAutor Miguel Benitez
Oben genannten Antworten sind richtig, aber auch überprüfen, um zu registrieren Ihre Klasse in der Manifest.
.Heruntergeladen ist deine Klasse, name oben.
InformationsquelleAutor Praveen Kashyap