3

活動をリフレッシュする必要があります。現在のアクティビティを終了して現在のアクティビティを再開するようにアドバイスする、同じことを再評価する質問がたくさんあります。または再び各ウィジェットに値を提供します。移行を避けるために、このコードを使用しました

Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.finish();

overridePendingTransition(0, 0);
startActivity(intent);

しかし、私の場合、アクティビティには 4 つのタブがあり、4 つのタブすべてを更新する必要があります。

同じことに関してさらにいくつかの問題があります 1) 上記のコードでは、他の画面にいる場合、上記のコードを実行するとこの画面に戻ります。

2) 活動シーケンスが乱れる。

3)選択したタブを維持することも問題の一部になります

各タブを別々に更新しようとしても、タブの1つにWebビューがあります。ビューがない限り webview.loadData() を呼び出すことができず、そのタブにいないためビューが表示されないため、それを更新する方法。

この問題に取り組むための理想的な方法は何ですか。どんな助けでも大歓迎です。

4

2 に答える 2

0

質問はそれほど複雑ではありませんでしたが、私が望んでいた解決策を最適化する必要がありました。最後に、2 番目の方法、つまり各コンポーネントを更新する方法を取りました。このアプローチは、活動の順序を乱すという問題を克服します。Web ビューについては、まだ使用してwebView.loadData(...)います。

合計で、各タブを個別に処理しました。コード全体を含めると扱いにくくなりますが、それでも多くの重要な機能を取り込もうとします。

アクティビティを更新する必要があるとき、アクティビティ クラスでこのメソッドを呼び出しました。

private void onRefrash()
{   
    refreshCurrentActivity();

    int selectedTab = getActionBar().getSelectedNavigationIndex();
    switch (selectedTab)
    {
    case TAB1:
        fragment1.update();
        break;
    case TAB2:
        fragment2.update();
        break;
    case TAB3:
        fragment3.update();
        break;
    }       
Toast.makeText(this, getString(R.string.msg_case_updates_received), Toast.LENGTH_LONG).show();  
    }                       
}

各フラグメントは以前に初期化され、対応する Web ビューを更新しているタブごとに update メソッドが呼び出されます。

于 2012-12-05T09:14:37.773 に答える
0

ユースケースによって少し異なります。毎回レイアウトを膨らませるために、もう一度 setContentView() を使用できます。リストを表示するだけの場合は、アダプターを呼び出してリストを表示するだけです。TabActivity のすべてのフラグメントに対してこれを行う必要があります。

WebView をリロードするには、もう一度loadUrl()を呼び出します。

選択したタブを記憶するには、それを保存してから、現在のタブをTabHostに設定する必要があります。

于 2012-11-22T11:06:38.243 に答える