0

レイアウト xml の宣言を避けるために、アクティビティにフラグメントを追加しようとしています。私がやっている

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    getSupportFragmentManager().beginTransaction()
            .add(android.R.id.content, new mFragment()).commit();
} 

しかし、それは次のようにクラッシュします:

java.lang.IllegalStateException: The specified child already has a parent. 
You must call removeView() on the child's parent first.

このエラーを回避するための短い形式はありますか?それとも、コンテンツ レイアウトを回復してすべてのビューを削除する必要がありますか? ありがとう

mFragment コードを編集します。

public class mFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View result= inflater.inflate(R.layout.activity_main, container);
        return result;
    }

}
4

2 に答える 2

3

膨らませながら次のコードを試してください。

View result= inflater.inflate(R.layout.activity_main, container, false);

これにより、デフォルトでビューが親に追加されなくなります。他の方法を使用すると、デフォルトで親が追加されます。したがって、動的に追加しようとすると、上記の例外がスローされます。

于 2012-08-24T11:45:03.537 に答える
1

変化する:

View result= inflater.inflate(R.layout.activity_main, container);

に:

View result= inflater.inflate(R.layout.activity_main, container, false);
于 2012-08-24T11:43:15.910 に答える