0

私のアプリは、ネットワーク接続がある場合にのみ機能します。そのため、アプリの起動時と再開時に同じことを確認します。

ネットワークの変更をリッスンするブロードキャストレシーバーがあります。

ネットワークがない場合は、単純な「ネットワーク接続なし」ビューを表示したいと考えています。「No Network Connectivity」には、悲しい顔をしたインターネットは存在しないことを示す 1 つのテキスト ビューが含まれています。

ネットワークが利用可能になったら、ブロードキャスト レシーバーから、「接続なしビュー」を「ダッシュボード」ビューに変更したいと考えています。

「ダッシュボード」ビューには、アプリの主要なビジネス ロジックとワークフローがあります。

そのため、ネットワークの状態に応じて、アクティビティは 2 つのビューの間で揺れ動きます。

これを達成するための最良の方法は何ですか?

ケース1:両方のビューに独自のアクティビティがあります。問題: 冗長な「接続なし」ビューのバックプレスとライフサイクル イベントを処理する必要があります。

ケース 2: 1 つのアクティビティで、ネットワークの状態に応じてビューを動的に切り替える

ケース 3:同じ xml ファイルに 2 つのレイアウト (相対レイアウト) があります。ステータスに応じて表示のオン/オフを切り替えます。

Case4: Inflaterを使用して動的にビューを切り替えます。

前もって感謝します。

4

1 に答える 1

0

ConnectStatusFragment、DashboardFragment の 2 つのフラグメントで 1 つのアクティビティを使用します。

private void showFramentDepends(){
    if(networkisfine){
        // init your fragmnet
        switchFragment(ConnectStatusFragment);
    }else{
        switchFrament(DashboardFragment);
    }
}

private void switchFragment(Fragment fragment){
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.replace(R.id.content_fragment, fragment);
    ft.commit();
}

アクティビティ レイアウト xml ファイルは次のようになります。

<FrameLayout
    android:id="@+id/content_fragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
</FrameLayout>
于 2013-02-23T16:36:32.863 に答える