2016-05-23 10 views
1

私は奇妙な問題に直面しています.6種類の異なるレイアウトでアクティビティを実装しようとしています。レイアウトタイプなどに基づいて1度に1つしか表示されませんアンドロイドアプリでアクティビティが再開されてもビューが表示されない

したがって、フローは20秒後にすべてのタイプ/ビューを表示し、n回後にアクティビティが終了します。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout style="@style/RelParent" 
      android:id="@+id/rel_parent" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 

<include 
    android:id="@+id/rel_1" 
    layout="@layout/layout_1"/> 

<include 
    android:id="@+id/rel_2" 
    layout="@layout/layout_2"/> 

<include 
    android:id="@+id/rel_3" 
    layout="@layout/layout_3"/> 

<include 
    android:id="@+id/rel_4" 
    layout="@layout/layout_4"/> 

<include 
    android:id="@+id/rel_5" 
    layout="@layout/layout_5"/> 

<include 
    android:id="@+id/rel_6 
    layout="@layout/layout_6"/> 

</RelativeLayout> 

アクティビティコード:

public class ExampleActivity extends AppCompatActivity { 

private ArrayList<Model> mModels; 
@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(null); 
    Log.d(TAG, "onCreate, starting quiz"); 
    initLayoutTypeMap(); 
    hideAllLayouts(); 
mModels = //getDataFromDB; 
    mHandler = new Handler(); 
mHandler.postDelayed(mRunnable, 2000); 
} 


private void initLayoutTypeMap() { 
    mTypeLayoutMap = new HashMap<>(); 
    mTypeLayoutMap.put(type1, relType1); 
    mTypeLayoutMap.put(type2, relType2); 
    mTypeLayoutMap.put(type3, relType3); 
    mTypeLayoutMap.put(type4, relType4); 
    mTypeLayoutMap.put(type5, relType5); 
    mTypeLayoutMap.put(type6, relType6); 
} 

private void startNew(int id) { 
Model model = mModels.get(id); 
showLayout(model.getType); 
showLayout(type); 
//Do all the data showing on views 
} 

private void showLayout(String type) { 
    mTypeLayoutMap.get(type).setVisibility(View.VISIBLE); 
} 

private Runnable mRunnable = new Runnable() { 
    @Override 
    public void run() { 
     if (id <= mModels.size()) { 
      hideAllLayouts(); 
      clearAll(); 
      startNew(id); 
      id++; 
      mHandler.postDelayed(mRunnable, 20000); 
     } else { 
      hideAllLayouts(); 
      mHandler.removeCallbacks(mRunnable); 
      finish(); 
      } 
     } 
    }; 
} 

は、今の問題は、私は活動を再開した場合、私は

レイアウトファイルビューのいずれかを見ることができないですです

最初の繰り返しでは、すべてが期待通りに機能します。私はこの活動を終了し、それを起動しようとしたら、しかし、再び何のビューが

+0

コード全体を表示できますか? hideAllLayouts()のようにあなたのonCreate()から欠けているいくつかのメソッドがありますか? –

答えて

1
= 1 finish()前に、あなたのIDを宣言するも

@Override 
    public void onResume(){ 

    if(mTypeLayoutMap == null){ 
    initLayoutTypeMap(); 
    } 
     hideAllLayouts(); 
    if(mModel == null){ 
    mModels = //getDataFromDB; 
    } 

    if(mHandler == null){ 
    mHandler = new Handler(); 
    } 

mHandler.postDelayed(mRunnable, 2000); 
} 

ようonCreate()からonResume()にあなたのハンドラのコードを移動し、

表示されませんので、それは再びまします反復する。

else { 
      hideAllLayouts(); 
      id=1; 
      mHandler.removeCallbacks(mRunnable); 
      finish(); 
      } 
+0

私はこのアプローチを試みましたが、うまくいかず、6つのレイアウトのいずれも表示しません。 –

関連する問題