3

My Android アプリでは、フローは次のようになります: メイン ページ -> ページ 1 -> ページ 2 -> ページ 3。Page1、Page2、Page3 にはホーム ボタンがあり、ホーム ボタンをクリックすると、メイン ページ (MainActivity) が起動するはずです。ここで、MainActivity クラスはサーバーから JSON データを取得します。

ここで私の質問は次のとおりです。ページ1、ページ2、またはページ3にいるときに、ホームボタンをクリックするとMainACtivityに移動する必要があります。同時に、ページ2にいるときにデバイスの戻るボタンをクリックすると、ページ1に移動する必要があります。同様に、ページ3にいる場合、デバイスの戻るボタンをクリックすると、ページ2に移動するはずです。

このために、私が使用した通常の解決策は、

//In Page1 Activity, Under Home button OnClickListner:
Intent in = new Intent(Page1.this,MainActivity.Class);
StartActivity(in); 

これにより、MainActivity クラスが負荷を取得してサーバーと通信するたびに、アプリのパフォーマンスが低下します。

私が試した別のアプローチ、つまり、

//In Page1 Activity, Under Home button OnClickListner
finish();

これは、ページ 1 で正常に機能します。Page2 で finish() を使用すると、page1 アクティビティが起動します。あるいは、私はこのように使用しました:

//In Page1 Activity:
Intent in = new Intent(Page1.this,Page2.Class);
startActivity(in);
finish();

そして、Page2 の Home Button OnClickListener の下に、finish() を書きました。これにより、Page2 で [ホーム] ボタンをクリックすると、MainActivity が起動します。同時に、デバイスの戻るボタンをクリックすると、MainActivity が起動されます。Page1 に移動する必要があります。

このスーツに何を使う必要があるか教えてください。

皆さん、ありがとうございました。

4

5 に答える 5

5

子アクティビティのインテントにフラグを設定する必要があります。

Intent i = new Intent(Page3.this, MainActivity.class); i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);

詳細については、 http://developer.android.com/guide/components/tasks-and-back-stack.htmlをご覧ください。

于 2014-11-13T16:48:45.127 に答える
0

どういうわけか私は私のスーツへの解決策を得ました.. Page2 で、ホームボタン SetonClickListener は次のようなコードを書きました:

Intent in = new Intent(Page2.this,MainActivity.class);
startActivity(in);

マニフェストファイルの下:メインアクティビティの場合、このように使用されています

android:launchMode="singleTask" 

これにより、ホームボタンをクリックするたびにインスタンス MainActivity が起動されますが、サーバーとは通信しません。

于 2013-08-19T10:44:06.100 に答える
0

docsを見てください。android:parentActivityName宣言中にマニフェスト ファイルで属性を使用できます activity

例:

<activity
        android:name="com.example.Page2"
        android:parentActivityName="com.example.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.MainActivity" />
    </activity>

MainActivityを使い始める必要はありません。Intent実行中に ParentActivity を呼び出す処理を行いますonBackPressed

追加する必要がある場合は、ここSupportLibraryからダウンロードできます。

編集 :

ここでActivity Lifecycle述べたように管理する必要があります。

MainActivityonCreateメソッド内でAsyncTask、サーバーからデータをロードするために の実行を開始します。

から戻るとPage2onResumeofMainActivityが呼び出されます。そのため、データがサーバーから再度読み込まれることはありません。

参考になれば幸いです!!

于 2013-08-19T09:54:38.903 に答える