正确地解决Intents以修复ActivityNotFoundException

时间:2013-08-27 19:59:32

标签: java android android-intent manifest activitynotfoundexception

使用此代码时出现ActivityNotFoundException:

    public void addListenerOnButton3(){

    button3 = (Button) findViewById(R.id.btnSettings);
    button3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {    
    Intent intentSettings = new Intent("net.stuffilike.kanaflash.Settings");
    showToast("Settings clicked,");
    try{
    startActivity(intentSettings); 
    }
    catch(Exception e){
        showToastL("Exception" + e);
    }
    return;
}
});
}

很公平,除了我不知道它是怎么想让我告诉它活动在哪里。以下是清单的相关部分:

   <activity
        android:name="net.stuffilike.kanaflash.Settings"
        android:label="@string/settings" >
        <intent-filter>
            <action android:name="android.intent.action.SETTINGS" />

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

如何确定编译器找到我的Settings.java文件? 哦,我的包名为

package net.stuffilike.kanaflash;

3 个答案:

答案 0 :(得分:1)

试试这个

@Override
public void onClick(View arg0) {    
    Intent intentSettings = new Intent(X.this,Settings.class);
    showToast("Settings clicked,");
    try{
    startActivity(intentSettings); 
    }
    catch(Exception e){
        showToastL("Exception" + e);
    }
    return;
}
});

将X替换为您当前的活动名称..

答案 1 :(得分:1)

constructor new Intent(String action)采取行动作为参数。

根据您的清单,您使用的操作是android.intent.action.SETTINGS

1.所以你的意图应该如下

Intent intentSettings = new Intent("android.intent.action.SETTINGS");

2.您可以使用活动名称

直接调用活动
Intent intentSettings = new Intent(this, Settings.class);

3.您还可以定义net.stuffilike.intent.action.SETTINGS等自定义操作,然后使用此操作创建Intent

Intent intentSettings = new Intent("net.stuffilike.intent.action.SETTINGS");

答案 2 :(得分:0)

有两种方法可以做到这一点。

  1. 使用操作String让系统查看Activity可以解决Intent上的操作的问题。如果有多个Activity可以解决操作,则用户可以选择选择他们想要的操作。

    Intent intentSettings = new Intent("android.intent.action.SETTINGS");
    
  2. 直接使用其类打开Activity(只有当两个Activity位于同一个应用中时才能这样做。)

    Intent intentSettings = new Intent(this, Settings.class);