Android アプリには、次の2 つのフラグメントがあります。
アイテムのListViewを持つフラグメント
ImageViewを持つフラグメント
コールバック onListItemSelected を介して、ユーザーが ListView 項目をクリックすると、MainActivity が ImageView をスタックにプッシュし、画像を含むフラグメントが画面に表示されます。この時点で、ListView フラグメントが表示されなくなったため、このフラグメントに関連付けられたイベントは発生しなくなったと思います。これはそうではありません。ImageView に触れると、ListView アイテムのリスナーは引き続き起動します。
2 つの質問:
フラグメントの可視性に基づいてリスナーを自動的に有効/無効にする方法はありますか?
そうでない場合は、ListViewフラグメントビューを無効にしてから、backButtonが押されたときに再度有効にする方法があると思います。MainActivity で backButton イベントをキャプチャして、以前に無効にしたビューを再度有効にするにはどうすればよいですか?
public class MainActivity extends FragmentActivity implement ListViewFragment.Callbacks {
[...]
public void onListItemSelected(String str) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.addToBackStack(null); fragmentTransaction.replace(R.id.listView, f); fragmentTransaction.commit(); // disable listView //View lw = getSupportFragmentManager().findFragmentById(R.id.listView).getView().findViewById(R.id.my_listView); //lw.setEnabled(false); }