导航抽屉打开不同的片段

时间:2015-10-12 01:24:30

标签: android-fragments

对于Android,我是初学者。我花了几个小时阅读教程,观看视频,并通过stackoverflow进行梳理,试图解决这个问题。即使有所有可用的在线资源,我仍然无法解决这个问题。

我希望我的列表视图始终在主屏幕上,但是当我滑动时,我希望导航抽屉滑入并显示不同的片段,具体取决于列表视图中的哪个项目已被选中。例如,如果用户选择了“帐户”,当他们从右侧滑动时,帐户片段就会显示。

我已经离开'navList'和'nav2List'进行测试,但我希望这些是碎片。

XML

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        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:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bankMenu"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">
        </ListView>

    </RelativeLayout>
<!-- Side navigation drawer UI -->
<ListView
    android:id="@+id/navList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:background="#ffeeeeee"/>

<ListView
    android:id="@+id/nav2List"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:background="#ffeeeeee"/>

</android.support.v4.widget.DrawerLayout>

JAVA

public class MainActivity extends AppCompatActivity {
    private ListView menu;
    private ListView mDrawerList;
    private ListView secondDrawerList;
    private ArrayAdapter<String> mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        menu =        (ListView) findViewById(R.id.bankMenu);
        mDrawerList = (ListView)findViewById(R.id.navList);
        secondDrawerList = (ListView)findViewById(R.id.nav2List);
        addBankingListItems();  // populate the banking items list

        menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    final int position, long id) {

                // ListView Clicked item index
                int itemPosition = position;

                // ListView Clicked item value
                String itemValue = (String) menu.getItemAtPosition(position);

                // Show Alert
                Toast.makeText(getApplicationContext(),
                        "Position :" + itemPosition + "  ListItem : " + itemValue, Toast.LENGTH_LONG)
                        .show();

                if (itemPosition < 4) {  // TESTING FUNCTIONALITY
                    addDrawerItems();
                } else {
                    addSecondDrawerItems();
                }
            }
        });
    }

--- --- EDIT 此问题已得到解决。 在xml文件中,我将两个ListViews更改为RelativeView。

<RelativeLayout
    android:id="@+id/frame_to_be_replaced"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:layout_below="@+id/topRL"
    android:background="#ffeeeeee">

</RelativeLayout>

在MainActivity中,我创建了一个片段管理器,然后在我的switch语句之后,我用所需的帧替换了帧。希望这可以帮助别人,给我一个下午的更多信息。

FragmentManager fragmentManager = getFragmentManager();
switch (itemPosition) {

                case 0:
                    fragment = MyFrag1.newInstance("", ""); // fragment declared above
                    break;
                case 1:
                    fragment = MyFrag2.newInstance("", "");
                    break;
                case 2: etc....
fragmentManager.beginTransaction()
                    .replace(R.id.frame_to_be_replaced, fragment)
                    .commit();

0 个答案:

没有答案