2017-07-17 4 views
0

練習として、私は簡単な電子ブックリーダーアプリを作成しています。これには3つのウィジェットがある1つのメインアクティビティ、2つのボタン(Previous、Next)、1つのFragmentコンテナ(Frame Layoutを使用しています)があります。すべてのページは、私が作成した異なるフラグメントであり、コンテナ内に入ります。これらのフラグメントは、テキストを表示するだけの1つのスクロール可能なテキストビューしかありません。 "next"ボタンを押すとpage2(fragment2)に行き、previousを押すと前の断片に戻るはずです。フラグメントで書かれたロジックに基づいて、親アクティビティのウィジェットを変更する方法

私の問題は、私は「前」ボタンは、最後のページに観察すべきではない初期画面(ページ1)と同様に、「次へ」ボタン上に表示したくないです。

私が試したのアプローチはtextview1(最初のフラグメント)が存在しているか、いないならば、そうならば

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, @Nullable Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.fragmentpage1,container,false); 

    textView1=(TextView)view.findViewById(R.id.tview); 
    **View listView = getActivity().findViewById(R.id.previous);** 
    textView1.setText(R.string.page1); 

    if (textView1.isEnabled()){ 

     listView.setVisibility(View.INVISIBLE); 
    } 
    return view; 
} 

、同様に私は、状態をチェックしていた場合、私のfragment1(ページ1)クラスでは、私が書いた、でしたメインアクティビティの前のボタンを非表示にします。これは動作しますが、私がpage2に行っても前のボタンは完全に隠れています。私は可能なすべての "is"オプションを試しましたが、どれも私に必要な結果を与えてくれませんでした。私が見つけた

つの回避策はfragment1にそれが見えないので、すべてのフラグメントに、前ボタンの「setvisibility」を追加することでしたし、その後fragment2に私が目に見えるのことを変更しました。しかし、フラグメント(ページ)が100個ある場合は時間がかかります。

私は簡単な解決策を提供してください、私はAndroidが初めてです。以下は

が私の主な活動コードです:(すべての変更は、よりクリーンなコードを作るために行われる必要があるなら、私に知らせてください)

パブリッククラスMainActivityは{

Fragment fragment; 
FragmentManager fm=getSupportFragmentManager(); 
FragmentTransaction ft; 


private static Button next; 
private static Button previous; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    next=(Button)findViewById(R.id.next); 
    previous=(Button)findViewById(R.id.previous); 

    create(); 

    } 

    public void create(){ 

     fragment= new FragmentPage1(); 
     ft= fm.beginTransaction(); 
     ft.add(container,fragment); 
     ft.commit(); 
    } 

    public void next(View view){ 

     fragment= new FragmentPage2(); 

      ft= fm.beginTransaction(); 
      ft.replace(container,fragment); 
      ft.commit(); 

} }

FragmentActivityを拡張します

答えて

0

FragmentPagerAdapterクラスでgetItem()メソッドを使用することができます。 スイッチケースを使用してボタンを無効または有効にしてください。これが役に立ったら=)

関連する問題