1

BaseActivityいくつかの一般的な動作を処理するクラスを作成しようとしています。

それらの 1 つは、アプリケーション アイコンのクリックをキャッチし、最初のアクティビティにリダイレクトすることです。これは単純に聞こえますが、これBaseActivityはライブラリ プロジェクトになります。明示的なインテント (クラスで定義) を使用できません。代わりに、一般的な意図を使用しようとしています:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        // app icon in action bar clicked: go back home
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setPackage(getPackageName());
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

私の問題は、私が得ていることであり、そのActivityNotFoundException理由がわかりません。

私に何ができる?

4

1 に答える 1

0

getLaunchIntentForPackage()から検索しているようですPackageManager。パッケージ名をパラメーターとして受け取り、Intentそのパッケージのメイン アクティビティを起動する を作成します。このように、パッケージ内で起動する必要がある特定のクラスを示す必要はありません。

現在の実装では、最初にカテゴリ内のメイン アクティビティが検索されCATEGORY_INFO、次にカテゴリ内のメイン アクティビティ CATEGORY_LAUNCHERが検索されます。どちらも見つからない場合は null が返されます。

于 2012-08-31T23:06:02.143 に答える