私は2つのアクティビティを持っています:MainActivityとOtherActivityMainActivityにおけるフラグメントはOTHERACTIVITYを起動しますが、私は一番上に戻る]ボタンを押すと、それは代わりにOTHERACTIVITYを開始しましたフラグメントのMainActivityに私を返します。別のアクティビティから戻った後、MainActivityのフラグメントに戻りますか?
エンドユーザは、使用していたフラグメントではなくメイン画面にエンドユーザが戻ってきます。
これは私のマニフェストです。私はOTHERACTIVITYの親にMainActivityを設定している:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
button.findViewById(R.id.events).setOnClickListener(new View.OnClickListener() {
Fragment ef = new MyItemsFragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.content, ef, "my_fragment");
fragmentTransaction.commit();
});
}
public void callOtherActivity() {
Intent i = new Intent(this, OtherActivity.class);
this.startActivity(i);
}
:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OtherActivity"
android:parentActivityName="com.example.test.MainActivity" >
</activity>
ユーザーがボタンをクリックMainActivity、で、それはリストのフラグメントをロードしますアイテムがList Fragmentでクリックされると、OtherActivityが起動されます。このコードの多くはアンドロイドスタジオによって自動生成されました。私はそれのいくつかを変更しました。 MyItemsRecyclerViewAdapterで:MainActivityで定義され、項目がリスト・フラグメントにクリックされたときOTHERACTIVITY起動することがを呼び出し
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mListener) {
// Notify the active callbacks interface (the activity, if the
// fragment is attached to one) that an item has been selected.
mListener.onEventFragmentInteraction(holder.mItem);
MainActivity ma = (MainActivity) holder.mView.getContext();
ma.callOtherActivity();
}
}
});
}
お知らせ。
これはOTHERACTIVITYです:
public class OtherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
}
}
さて、私はOTHERACTIVITYでのバック矢印ボタンをクリックすると、アプリはちょうどMainActivityはなく、リストのフラグメントを示すことユーザーは最後に見た。
OtherActivityから戻ってきたら、ユーザーはユーザーエクスペリエンスを向上させるためにリストフラグメントを再度表示することができますか?
編集:「戻る」ボタンが混乱しているようです。多分彼らは同じですが、私は活動を切り替えるときに私は話しています。アプリケーションを終了するために使用される戻るボタンではありません。 See image
フラグメントを呼び出す際にaddToBackStack(null)を削除してみてください –
マニフェストファイルからアンドロイド:parentActivityName = "com.example.test.MainActivity"を削除して試してください。戻るボタンをクリックすると、MainActivityは基本的に私が間違っている場合はお知らせください。 –
「戻る」ボタンは1つだけあり、通常はバックスタックをナビゲートするために使用されます。私はあなたの更新はあなたが "アップ"ボタンを指していると言っていると思います。 https://developer.android.com/training/appbar/up-actionhtml – Kuffs