1

(ViewPager を使用して) スクロール可能な 3 つのタブで構成される MainActivity を作成しました。これら 3 つのタブのそれぞれが Fragment です。また、ActionBarSherlock (ABS) を使用しています。

最初のフラグメントでは、次のクラスを作成しました。

public class Fragment_1 extends SherlockFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.fragment1, container, false);
        return v;
        /* R.layout.fragment1 only contains a TextView. */
    }
}

2 番目の Fragment については、以下に示すように FragmentActivity を拡張したいと考えています。

public class Fragment_2 extends FragmentActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment2);
        }
}

3番目のフラグメントは最初のものと同じです。

しかし、アプリを起動するとクラッシュします。では、クラス Fragment_2 の FragmentActivity を拡張するのは間違っていますか? FragmentActivity または Activity をフラグメント クラスに拡張することは違法ですか? そうでない場合、ここで何が問題になっていますか?

ありがとう。


編集: @CommonsWare の回答の後、クラスを次のように更新しました。

public class Fragment_2 extends SherlockFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Button send = (Button) findViewById(R.id.bSend); //Error at this line
            //some error free code
            FragmentTransaction t = getSupportFragmentManager().beginTransaction(); //Error at this line
        }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v = inflater.inflate(R.layout.fragment2, container, false);
    return v;
}

私の最後の2つの質問は次のとおりです。

  1. Fragment_2 クラスの R.id.bSend ボタンにアクセスするにはどうすればよいですか。
  2. Eclipse は、getSupportFragmentManager() を getFragmentManager() に変更することを提案しています。その変更は大丈夫ですか?

ありがとう!

4

1 に答える 1

9

FragmentActivity または Activity をフラグメント クラスに拡張することは違法ですか?

FragmentJavaクラスです。フラグメントの実装 ( 内のページとして使用するため) は、 から直接的または間接的にViewPager継承する必要があります。Fragment

Activityから継承しませんFragmentFragmentActivityから継承しませんFragmentActivityしたがって、 orから継承することはできずFragmentActivity、どういうわけかから継承しFragmentます。

于 2013-07-01T22:29:53.413 に答える