簡體   English   中英

Android:無法找到顯式活動類……從 PreferenceActivity 開始活動

[英]Android: Unable to find explicit activity class… startActivity from a PreferenceActivity

我正在嘗試從 PreferenceActivity 開始一個新的 Activity。 但是,它失敗並顯示“無法找到顯式活動類。您是否在 AndroidManifest.xml 中聲明了此活動?”

嗯,是的,我聲明了:

<application [......] android:debuggable="true">
    <activity android:name=".AlarmSettings"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".FlashLightActivity"></activity>

    <receiver
        android:name="AlarmReceiver"
        android:process=":remote" >
    </receiver>
</application>

AlarmSettings 是我的 PreferenceActivity。 AlarmSettings 以這種方式調用 FlashLightActivity:

Intent i = new Intent(AlarmSettings.this, FlashLightActivity.class);
startActivity(i);

這是 FlashLightActivity:

public class FlashLightActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.flashlight);
   }    
}

... 我不知道該怎么辦。 有任何想法嗎?

我也有這個問題。 如果您仔細閱讀 logcat 上的錯誤,您就會知道該怎么做。

您必須在 AndroidManifest.xml 中聲明活動

    <activity
        android:name=".TheNameOfMyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

對我來說,發生此錯誤是因為我已將活動類文件移動到不同的包,並且由於某種原因 Eclipse 沒有正確重構它。 始終為您的活動使用完全限定的名稱,並仔細檢查它是否准確。

當從另一個內部啟動 Activity 時,您需要為您的 AndroidManifest 文件提供父子關系,以確保啟動的 Activity 將其結果返回給您需要父 Activity。 例子,

<activity
            android:name="ACTIVITY TO BE STARTED"
            android:label="@string/TITLE"
            android:screenOrientation="landscape" >
             <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="ACTIVITY STARTED FROM?RETURNING TO" />
        </activity>

我遇到了同樣的問題,我所做的是在服務或布局的onCreate函數中編寫了 Intent 聲明。 實際上這就是所說的“無法訪問顯式”

就我而言,我只需要重命名該類,因為這是 android studio 保留的一個詞,或者有另一個參考,所以:

  • 可以用crl + space找到這個並檢查你的建議的路線
  • 檢查類中的導入並刪除不需要的
  • 不要使用默認名稱

所以不要使用FlashLightActivity為例。

也許它對其他人有用

將海報的解決方案復制到答案部分,以將其從“未答復”過濾器中刪除:

這不是我的代碼的問題,而是 Eclipse 和 Android SDK 的問題。 經過一番研究,我在 Eclipse 中執行了“幫助 -> 檢查更新”,現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM