当我使用以下代码时,我得到一个 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");
有两种方法可以做到这一点。
-
使用操作
String
让系统查看哪些Activity
可以解决Intent
上的操作。如果有多个Activity
可以解决该操作,则用户将获得一个选项来选择所需的操作。Intent intentSettings = new Intent("android.intent.action.SETTINGS");
-
直接使用其类打开
Activity
(仅当两个Activity
都在同一应用程序中时才能完成(。Intent intentSettings = new Intent(this, Settings.class);