2016-09-15 2 views
0

Привет, коллеги-программисты, я создаю приложение, которое неявно вызывает Activity2 из Activity1. Я попытался вызвать Activity3 из Activity1 в явном виде и, похоже, работает нормально. Не могли бы вы помочь мне найти, как преодолеть ошибку, которую я имею. Btw я должен сделать это НЕПРАВИЛЬНО.Ошибка программирования Android IllegalStateException

Когда подножка приложение через эмулятор системы отправить сообщение об ошибке, как это «К сожалению, приложение остановилось»

Вот LogCat:

09-15 08:31:03.977 31960-31960/com.seneca.lab2b E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.seneca.lab2b, PID: 31960 
java.lang.IllegalStateException: Could not execute method for android:onClick 
at android.view.View$DeclaredOnClickListener.onClick(View.java:4452) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invoke(Native Method) 
at android.view.View$DeclaredOnClickListener.onClick(View.java:4447) 
at android.view.View.performClick(View.java:5198)  
at android.view.View$PerformClick.run(View.java:21147)  
at android.os.Handler.handleCallback(Handler.java:739)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.seneca.lab2b.abbas } 
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1798) 
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) 
at android.app.Activity.startActivityForResult(Activity.java:3917) 
at android.app.Activity.startActivityForResult(Activity.java:3877) 
at android.app.Activity.startActivity(Activity.java:4200) 
at android.app.Activity.startActivity(Activity.java:4168) 
at com.seneca.lab2b.FirstActivity.onClick(FirstActivity.java:60) 
at java.lang.reflect.Method.invoke(Native Method)  
at android.view.View$DeclaredOnClickListener.onClick(View.java:4447)  
at android.view.View.performClick(View.java:5198)  
at android.view.View$PerformClick.run(View.java:21147)  
at android.os.Handler.handleCallback(Handler.java:739)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
09-15 08:31:08.979 31960-31960/com.seneca.lab2b I/Process: Sending signal. PID: 31960 SIG: 9 

Вот файл макета для FirstActivity:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/display" 
     android:textSize="20sp" 
     android:onClick="onClick"/> 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/display3" 
     android:textSize="20sp" 
     android:onClick="onClick3"/> 


</LinearLayout> 

И макет для SecondActivity:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is the Second Activity!" /> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Please enter your name" /> 

<EditText 
    android:id="@+id/txt_username" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@+id/btn_OK" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="OK" 
    android:onClick="onClick"/> 

</LinearLayout> 

Вот menifest файл:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.seneca.lab2b" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="21" 
       android:targetSdkVersion="23"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <activity 
      android:label="@string/app_name" 
      android:name="com.seneca.lab2b.FirstActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:label="Second Activity" 
      android:name="com.seneca.lab2b.SecondActivity" > 
      <intent-filter > 
       <action android:name="com.seneca.abbas" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:label="Third Activity" 
      android:name="com.seneca.lab2b.ThirdActivity" > 
      <intent-filter > 
       <action android:name="com.seneca.third" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

    </application> 

</manifest> 

Вот файл Java для FirstActivity:

package com.seneca.lab2b; 

import com.seneca.lab2b.R; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 

import android.util.Log; 
import android.view.View; 


public class FirstActivity extends Activity { 
    private final String CLASS_NAME = "FirstActiviy"; 
    private int request_Code = 1; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.firstactivity); 
     Log.d(CLASS_NAME, "onCreate invoked!"); 
    } 

    public void onStart(){ 
     super.onStart(); 
     Log.d(CLASS_NAME, "onStart invoked!"); 
    } 

    public void onPause(){ 
     super.onPause(); 
     Log.d(CLASS_NAME, "onPause invoked!!"); 
    } 

    public void onResume(){ 
     super.onResume(); 
     Log.d(CLASS_NAME, "onResume invoked!!"); 
    } 

    public void onStop(){ 
     super.onStop(); 
     Log.d(CLASS_NAME, "onStop invoked!!!"); 
    } 

    public void onDestroy(){ 
     super.onDestroy(); 
     Log.d(CLASS_NAME, "onDestroy INVOKED!!!"); 
    } 

    public void onRestart(){ 
     super.onRestart(); 
     Log.d(CLASS_NAME, "onRestart invoked!!"); 
    } 


    // event handler for the button (activity 2) 
    public void onClick(View view) { 

     startActivity(new Intent("com.seneca.lab2b.abbas")); 
     //Intent intent=new Intent(Intent.ACTION_VIEW); 
     //intent.setData(Uri.parse("com.seneca.lab2b.abbas")); 
     //startActivity(intent); 
    } 

    // event handler for a button (activity 3) 
    public void onClick3(View view) { 

     startActivity(new Intent(this, ThirdActivity.class)); 

    } 
} 
+0

Что вы подразумеваете под «неявным» и «явно» вызывающим действием? –

+0

неявное намерение и явное намерение. –

ответ

0

Посмотрите на Android Start Another Activity Док.

Согласно вашему журналу ошибок, Your Intent не находит вашу деятельность.

Вы можете начать свою вторую деятельность, как показано ниже.

public void onClick(View view) { 

    Intent intent = new Intent(getApplicationContext(),SecondActivity.class); 
    startActivity(intent); 
} 
+0

Он сказал, что он должен сделать это неявно, он сделал то, что вы сказали в 'onclick3'. – Shadov

+0

Если я делаю намерение так, как вы говорите, тогда я буду делать явное намерение. Но весь смысл моего проекта заключается в том, чтобы он неявно, т. Е. Находил намерение через файл манифеста. –

1

В методе OnClick у вас есть:

startActivity(new Intent("com.seneca.lab2b.abbas"));

и в XML:

com.seneca.abbas

Вы передаете неправильное имя действия (lab2b не существует в XML) и это может быть причиной, исправить это.

+0

Wow, Whatzs, вот и все! Это было исправление. Большое вам спасибо. Действительно ценю это. Хорошего дня ! :) –

+0

@Abz Manakibwala Пожалуйста, прочитайте [Как работает прием ответа?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Onik

Смежные вопросы