0

この質問はここで何度も尋ねられましたが、どれにも助けが見つかりませんでした。Android アプリケーションを作成していますが、ActionBar でのタブの作成に問題があるようです。私は数時間問題を探していましたが、解決策を見つけることができないようですが、ソースを見つけたと思います. いくつかの結果を取得してそれらに基づいて構築するためだけに実装を空にしましたが、残念ながら何も見つかりませんでした。

これは、タブフラグメントの作成とアクションバーへの挿入です

    // put ActionBar to nav. mode
    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // init "YES" tab
    Fragment yesTabFragment = Fragment.instantiate(this, YesTabFragment.class.getName());
    FlowTabListener yesTabListener = new FlowTabListener(yesTabFragment);
    ActionBar.Tab yesTab = actionBar.newTab().setText("YES").setTabListener(yesTabListener);
    actionBar.addTab(yesTab);

これはクラスの onCreateView メソッドです

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    _fragmentView =  inflater.inflate(R.layout.yes_fragment, container);    
}

これがフラグメントの XML レイアウトです

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical" >

    </LinearLayout>

ご覧のとおり、実装は空であり、このフラグメントをこの時間より前に (後ではない) インスタンス化していませんが、次のエラーが発生します。

E/AndroidRuntime(2995): FATAL EXCEPTION: main
E/AndroidRuntime(2995): java.lang.RuntimeException: Unable to start activity ComponentInfo{activities.MainActivity}:    
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

actionBar.addTab()コメントアウトするとアプリケーションが実行されるため(明らかにタブなしで)、アクションバーへのタブの追加と関係があると思います

これを整理する方法についてのヒントが本当に欲しいです。

ありがとうございます

4

1 に答える 1

5

の 2 番目のパラメーターinflate()は、既定の親です。

_fragmentView =  inflater.inflate(R.layout.yes_fragment, container);

この行を次のように変更します。

_fragmentView =  inflater.inflate(R.layout.yes_fragment, null);
于 2012-10-07T19:52:32.347 に答える