0

2 つの同様のフラグメントを実装する 2 つのタブでアクティビティがあり、各フラグメントはGridViewで構成され、 AsyncTaskを介してアイテムをロードし、画面の向きが変わるまで正常に動作します...その後、アクションバーをクリックしてタブを切り替えることしかできませんが、GridViewsは、スクロール、クリックなど、ユーザーとの対話を完全に停止します。標準のonSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)のみが実装されています。

この問題についてはわかりません。助けが必要です。

UPD : さて、新しい向きが変わるたびに、フラグメントの新しいインスタンスが 1 つ表示されます。

UPD2 : 不要なコードを削除しました。

4

2 に答える 2

0

あなたのアクティビティは向きの変更で再作成されています。

マニフェストの設定に android:configChanges="keyboardHidden|orientation" を追加してみてください。これにより、アクティビティが再作成されるのを防ぐことができます。

于 2012-07-13T19:58:30.697 に答える
0

問題を解決しました!

問題は、Activity.onCreate とタブ作成メカニズムにありました。

状態の変更後にアクティビティが再作成されるたびに onCreate 追加で新しいタブが追加されるため、

    if(savedInstanceState == null){

問題の解決を確認してください。以下は、適切に機能する完全な OnCreate メソッドです。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayShowTitleEnabled(false);
    if(savedInstanceState == null){
        Tab tab = actionBar.newTab()
                .setText("TabLabel")
                .setTabListener(new TabListener<FileFragment>(
                        this, "TabTag", FileFragment.class));
        actionBar.addTab(tab);
    }
    Log.d("Activity.OnCreate", "Creating Activity");

}
于 2012-07-14T09:05:55.083 に答える