2

2つの活動があります。

アクティビティAには、アクティビティBに切り替えることができるボタンがあります。

アクティビティBには、アクティビティAに切り替えることができるボタンもあります。

これが私のコードです、

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Log.e("current", context.getClass().toString());
    Log.e("changeto", tab.getTag().toString());
    if(context.getClass()==tab.getTag())
        return;

    Intent intent = new Intent(new Intent(context,(Class<?>) tab.getTag()));
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    context.startActivity(intent); 
}

アクティビティを切り替えたときにアニメーションを削除したいのですが、機能しません。

ただし、削除すると

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

それは完璧に動作します。なんで?

英語が下手でごめんなさい。

4

2 に答える 2

8

切り替え先のアクティビティで overridePendingTransition(0,0);、onResume または onCreate で使用してみてください。

于 2012-09-02T04:27:12.520 に答える
0

タブ スイッチで startActivity を呼び出している場合は、間違っています。タブは現在のアクティビティ内でビューを切り替えるためのものであり、タブを切り替えることでナビゲーション履歴が作成されることはありません。代わりに、フラグメントを切り替えるか、ビュー階層を新しく選択したタブのコンテンツに置き換えることを検討してください。

タブ選択のためのアクティビティの切り替えを追求すればするほど、アプリが単に「間違っている」と感じさせる微妙なユーザー エクスペリエンスのバグでモグラたたきをしていることに気付くでしょう。

上記の提案された実装では、[戻る] ボタンは以前に選択されたタブに戻り、「ナビゲーション履歴を作成しない」というルールを破ります。次のアクティビティを開始するときに現在のアクティビティを終了することでこれを解決できると思うかもしれませんが、それでも他の多くの問題があります。ユーザーは、スクロール位置などの微妙な状態要素がタブ間で維持されることを期待しています。Android 4.0 の時点で、ユーザーがタブ ( http://developer.android.com/design/building-blocks/tabs.html )間で水平方向にスワイプできることが期待されています。各タブのコンテンツに個別のアクティビティを使用します。

これは小さなサンプルに過ぎず、リストは続きます。異なるアクティビティを切り替えるためにタブを使用しないでください。

于 2012-09-02T04:50:03.373 に答える