(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つの質問は次のとおりです。
- Fragment_2 クラスの R.id.bSend ボタンにアクセスするにはどうすればよいですか。
- Eclipse は、getSupportFragmentManager() を getFragmentManager() に変更することを提案しています。その変更は大丈夫ですか?
ありがとう!