正确寻址意图以修复 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;

试试这个

@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 替换为您当前的活动名称 ..

new Intent(String action)constructor作为参数执行操作。

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

1.So 您的意图应如下所示

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");

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

  1. 使用操作String让系统查看哪些Activity可以解决Intent上的操作。如果有多个Activity可以解决该操作,则用户将获得一个选项来选择所需的操作。

    Intent intentSettings = new Intent("android.intent.action.SETTINGS");
    
  2. 直接使用其类打开Activity(仅当两个Activity都在同一应用程序中时才能完成(。

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

相关内容

  • 没有找到相关文章

最新更新