2017-06-15 12 views
0

私は学校用のAndroidアプリを作っています。アクティビティを再作成せずに再利用

第1アクティビティはです。学生は、ViewPagerを含み、3つのフラグメントで構成されています。このアクティビティには、3つのフラグメントが含まれているため、読み込みにコストがかかります。

第一断片は、(テストのタイトルだけが含まれているリストビュー)テストのリストビューが含まれている漫画

第三断片のリストビューが含まれているゲームのリストビュー

第二フラグメントが含まれています。 テストフラグメントのonClickで今

(リストビューに表示される)テストの上に新しいShowTestアクティビティ完全なテストを示している開放されています。

すべてうまく動作します。

ShowTest活動

test.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Intent it = new Intent(getActivity(), ShowTest.class); 
      startActivity(it); 
     } 
    }); 

そしてShowTest活動で、私はちょうど(仕上げを呼んでいる)を開始するTestFragmentのコードです。

public void onBackPressed() { 
    this.finish(); 
} 

しかしonBackpressed ShowTest(中)は、(断片内のすべてのものはリロード)学生活動の再作成と呼ばれています。私はこの活動が2回目に作られることを望んでいません。それは負荷として高価です。

これらの2つのリンクがあなたの助けが理解されるであろう

Open Info Activity without closing Main Activity

Android - Relaunching an activity without having to re-create it

私を助けてくれませんでした。あなたが他の活動の開始にfinish()を呼ぶかもしれない

+0

これは、アクティビティの開始方法とコードの関連部分がどこにあるかによって異なります。たとえば、アクティビティを終了して次のアクティビティに移動し、そのアクティビティを最初のアクティビティに戻すと、アクティビティが再作成されます。終了しない場合、通常、アクティビティはバックグラウンドにとどまります。それで、すべてのコードがどこにあるかは重要です。たとえば、onResume()のすべてを初期化すると、すべてが再び実行されます。あなたは間違いなくアクティビティライフサイクルを読む必要があります:https://developer.android.com/guide/components/activities/activity-lifecycle.html – Opiatefuchs

+1

これを保証する方法はありません。 Androidでメモリの問題が検出された場合、フォアグラウンドにないアクティビティは閉じられ、必要に応じて後で再作成されます。その動作をオーバーライドする方法はありません(実際には、唯一の選択肢はテストのために常にオンにすることです)。 –

+0

ShowTestActivity、onBackPressed()メソッドおよびその他の関連するコードを開始するために使用するコードを投稿します。 –

答えて

0

により ' アンドロイド:noHistory = "true" を' とAndroidのマニフェスト

<activity 
    android:name="plan9.naseemdev.muhammadtaimoor.naseem.Student" 
    android:configChanges="orientation|screenSize" 
    android:noHistory="true" /> 

で申し訳ありませんが、私のミス

学生の活動が毎回再作成されたに。 この行を削除すると、それは私のために働く。

0

おかげで(編集後)。それを呼び出さずにfinish()を使わずに活動を開始してください。

+0

いいえ、私はアクティビティの開始時に 'finish()'と呼んでいません。 これがなぜ起こっているのか不思議である – Taimoor

-2

私はさらに助けることができるようにコードを共有してください。 また、ページャアダプタを適切に初期化していることを確認してください。

関連する問題