Android FragmentActivity没有显示操作栏

时间:2015-01-21 16:39:50

标签: android android-fragments

我正在尝试创建一个使用片段的应用程序,但是当我尝试在Fragment中显示FragmentActivity时,操作栏中没有显示。

FragmentActivity类:

public class NoteDetailsActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.note_details_fragment);


        if (getResources().getConfiguration().orientation
                == Configuration.ORIENTATION_LANDSCAPE) {
            // If the screen is now in landscape mode, we can show the
            // dialog in-line with the list so we don't need this activity.
            finish();
            return;
        }

        if (savedInstanceState == null) {
            // During initial setup, plug in the details fragment.
            NoteDetailsFragment details = new NoteDetailsFragment();
            details.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction().add(R.id.note_details, details).commit();
        }
    }
}

片段类:

public class NoteDetailsFragment extends Fragment {
    /**
     * Create a new instance of DetailsFragment, initialized to
     * show the text at 'index'.
     */
    public static NoteDetailsFragment newInstance(int index) {
        NoteDetailsFragment f = new NoteDetailsFragment();

        // Supply index input as an argument.
        Bundle args = new Bundle();
        args.putInt("index", index);
        f.setArguments(args);

        return f;
    }

    public int getShownIndex() {
        return getArguments().getInt("index", 0);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (container == null) {
            // We have different layouts, and in one of them this
            // fragment's containing frame doesn't exist.  The fragment
            // may still be created from its saved state, but there is
            // no reason to try to create its view hierarchy because it
            // won't be displayed.  Note this is not needed -- we could
            // just run the code below, where we would create and return
            // the view hierarchy; it would just never be used.
            return null;
        }

        int index = getArguments().getInt("index");
        String message = "";
        switch (index) {
            case 0:
                message = "Start";
                break;
            case 1:
                message = "Second";
                break;
            case 2:
                message = "last";
                break;

        }

        TextView text = new TextView(getActivity());
        text.setText(message);
        return text;
    }
}

我已尝试在onCreateOptionsMenu课程中实施FragmentActivity,但没有任何反应。我也尝试过Fragment类中的setHasOptionsMenu(true),但这也没有做任何事情。

如果感兴趣的话,这里是我插入Fragment(note_details_fragment)的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_margin="@dimen/activity_vertical_margin"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_above="@id/save_note"
        android:id="@+id/note_details"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="?android:attr/detailsElementBackground" />

    <Button
        android:id="@+id/save_note"
        android:layout_alignParentBottom="true"
        android:text="@string/save"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

编辑: 从清单:

    <activity android:name=".activities.NoteDetailsActivity">
    </activity>

1 个答案:

答案 0 :(得分:2)

从课程ActionBarActivity而不是FragmentAcivity派生可以解决您的问题:

public class NoteDetailsActivity extends ActionBarActivity {
   // ...
}