web-dev-qa-db-ja.com

methodは、スーパークラスのmethodをオーバーライドしません。 Androidフラグメント

フラグメント1:

public class fragment1 extends Fragment implements View.OnClickListener {
    ImageButton but, but1, but2;
    ImageView view;
    @Override << this one
    public View OnCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View myView = inflater.inflate(R.layout.fragment1, null);
        but = (ImageButton) myView.findViewById(R.id.imageButton11);
        but.setOnClickListener(this);
        but1 = (ImageButton) myView.findViewById(R.id.imageButton1);
        but1.setOnClickListener(this);
        but2 = (ImageButton) myView.findViewById(R.id.imageButton2);
        but2.setOnClickListener(this);
        return myView;
    }

    @Override
    public void onClick(View v) {
        main xxx = (main)getActivity();
        switch (v.getId()) {
       case R.id.imageButton11:
                xxx.str="but1";
                break;
..
            }}

メイン:

Fragment frag1 = new fragment1();
    fr1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    fTrans = getFragmentManager().beginTransaction();
                    fTrans.replace(R.id.frameLayout2, frag1);
                    fTrans.addToBackStack(null);
                    fTrans.commit();
                }
            });

methodは、fragment1のスーパークラスからのメソッドをオーバーライドしません(最初のオーバーライド)が、 "implements View.OnClickListener"なしでは機能します

4
pmipmi

スペルの間違い。メソッドにonCreateViewではなくOnCreateViewと名前を付けます。

23
Bubletan

Android sdkについてはよく知りませんが、このようなものが必要だと思います

Fragment frag1 = new fragment1(){
         @Override
         public void onClick(View view) {
              fTrans = getFragmentManager().beginTransaction();
              fTrans.replace(R.id.frameLayout2, frag1);
              fTrans.addToBackStack(null);
              fTrans.commit();
         }
 };
0
SteveL

膨張したビューを返す

public View onCreateView(.....) {
...
...

return InputFragmentView;
}

onCreateViewをonCreateViewに変更します。 Ctrl + Oをタップして準備できます^^

0
B.Moataz

私の場合、フラグメントから拡張していませんでした。必ずフラグメントをFragmentクラスから拡張してください。

public class fragment1 extends Fragment implements View.OnClickListener {
   @Override
///   public View onCreateView.......
}
0
Ramesh Pareek