練習として、私は簡単な電子ブックリーダーアプリを作成しています。これには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を拡張します