web-dev-qa-db-ja.com

Android Manifest?

別のアクティビティを開始するアクティビティがあります。
Android Manifest?そのうちの?

Android:parentActivityName="com.example.myfirstapp.MainActivity" 
15
J. K.

docs に従って->セクションAndroid:parentActivityName

システムはこの属性を読み取り、ユーザーがアクションバーの上ボタンを押したときに開始するアクティビティを決定します。システムはこの情報を使用して、TaskStackBuilderでアクティビティのバックスタックを合成することもできます。

したがって、指定する必要があるのは、(戻るボタンによるナビゲーションではなく)アップナビゲーションまたは TaskStackBuilder を使用する場合のみです。それ以外の場合は必要ありません。

アップナビゲーションについてはこちらをチェックしてください: http://developer.Android.com/design/patterns/navigation.html

28
Szymon

上向きのナビゲーションまたはバックスタック合成が必要な場合は定義する必要がありますが、属性Android:parentActivityNameはAPIレベル16で導入されたことに注意してください。

以前のリリースでは、親のアクティビティ情報は、子の<meta-data>タグ内で宣言されている<activity>タグ内で定義された属性からアクセスされます。

例:

    <activity
        Android:name=".DetailActivity"
        Android:parentActivityName=".MainActivity">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value=".MainActivity"/>
    </activity>

<meta-data>タグ内で、Android:name属性をAndroid.support.PARENT_ACTIVITYに設定し、Android:value属性を親アクティビティクラス名(つまり、Android:parentActivityNameに割り当てられたものと同じクラス名)に設定します。

APIレベルが既知でない限り、<meta-data>とインライン仕様の両方が推奨されます。

親アクティビティの指定の詳細については、次を参照してください: https://developer.Android.com/training/implementing-navigation/ancestral.html#SpecifyParent

さらに、メインのAndroid:launchModeタグ内に<activity>属性を定義して、上方向のナビゲーションの望ましい動作を設定することを検討してください: https://developer.Android.com/guide/topics/manifest/activity-element.html#lmode

5
Bob Basmaji

必ずしも_AndroidManifest.xml_でparentActivityを定義する必要はありません。以下のコードを使用して、戻るナビゲーションを有効にできます。

_ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
_

そしてこれを実装します:

_public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == Android.R.id.home) {
        onBackPressed();
    }
    return super.onOptionsItemSelected(item);
}
_

ただし、マニフェストでparentActivityを定義すると、システムはこの属性を読み取って、ユーザーがアクションバーで[上へ]ボタンを押したときに開始するアクティビティを決定します。つまり、parentAcivityの新しいインスタンスを作成します。つまり、親アクティビティのonCreate()を呼び出します。

3
Arup Saha

このようにmanifestで親アクティビティを指定する必要はありません

_Android:parentActivityName="com.example.myfirstapp.MainActivity" 
_

navigationUpの場合は、setDisplayHomeAsUpEnabled(true);およびonSupportNavigateUp()メソッドも使用できます これを見てください

0

インテントまたはランチャーを介して呼び出すマニフェスト内のすべてのアクティビティを指定する必要があります。これにより、システムはそれを見つけることができます。したがって、アプリを開始できるランチャーとして1つのアクティビティをマークし、アプリで呼び出す他のすべてのアクティビティを登録します。

このようなBaseActivityがある場合:

public class BaseActivity extends Activity{}

public class MyActivity extends BaseActivity{}

myActivityを登録するだけで済みます。BaseActivityはシステムではなくユーザーによって呼び出されるためです。

0
Steve Benett