为什么我的应用程序无法找到处理意图的活动

时间:2014-02-05 06:51:25

标签: android android-intent android-manifest

我正在使用switchcase来进行optionmenu。但是我得到了一些错误。我已经检查了logcat也说了

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.app1.ABOUT }

下面给出了我在java类中编写的一小段代码。

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.aboutus:
        Intent i = new Intent("com.app1.ABOUT");
        startActivity(i);
        break;

    case R.id.preferences:
        Intent s = new Intent("com.app1.PREFS");
        startActivity(s);

        break;
    case R.id.exit:
        finish();
        break;

    }
    return false;
}

以及android清单的代码如下所示。

 <activity
        android:name="com.app1.Aboutus"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Dialog" >
        <intent-filter>
            <action android:name="android.intent.action.ABOUT" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

我是否以正确的方式从我的java类中裁判清单?

3 个答案:

答案 0 :(得分:3)

试试这个你的清单..

    <activity
        android:name="com.app1.Aboutus"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

      <activity android:name="com.app1.ABOUT"/>         

      <activity android:name="com.app1.PREFS"/>        

在java中

case R.id.aboutus:
    Intent i = new Intent(Aboutus.this, ABOUT.class);
    startActivity(i);
    break;

case R.id.preferences:
    Intent s = new Intent(Aboutus.this, PREFS.class);
    startActivity(s);

答案 1 :(得分:0)

    // I  can modify like this
     Intent i = new Intent(Activity1.ths, Activity2.class);
     startActivity(i);

答案 2 :(得分:0)

您在意图中使用的包名称&amp;你清单中的名字是不同的。因此,将清单中的活动名称更改为:

<activity android:name="com.app1.ABOUT"/>         
<activity android:name="com.app1.PREFS"/> 

因为这些是你在意图中使用的名字。

Intent s = new Intent("com.app1.PREFS");

因此,清单和版本中的名称应该相同。在意图中使用。