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

也適用。謝謝。 –