1

我得到一个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; 

回答

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 ..

+0

这就是它!非常感谢你。 –

+0

欢迎,请将此答案标记为已接受(勾号) –

0

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

  1. 使用行动String让系统看看Activity S能够解决在Intent的动作。如果有多个Activity可以解决该操作,用户将得到一个选择他们想要的选项。

    Intent intentSettings = new Intent("android.intent.action.SETTINGS"); 
    
  2. 打开直接使用它的类Activity(只能如果两个Activity s为在相同的应用程序进行)。

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

constructornew Intent(String action)采取行动的参数中。

根据你的表现,你所使用的动作是android.intent.action.SETTINGS

1.So你的意图应该是如下

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

2.You可以直接调用活动通过使用活动名称,

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

3.You也可以这样定义net.stuffilike.intent.action.SETTINGS自定义操作,然后用它来创建你Intent

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

也适用。谢谢。 –