如何通过 SideMenu 更改主布局

how to change the main layout by SideMenu

关于:我直接点击菜单SideMenu

"Rate" 甚至其他菜单,我想更改右箭头显示的主视图,但如何?这是 source of github

case 0:
     // int the case, click the menu : Rate (or even other menu)
     /**
      * If I click the menu in the picture : Rate 
      * I want to change the main layout that the right arrow shows
      * but how ?
      * 1: what to do with the content view ?
      * 2: or what to with the following code ?
      */
     break;

您似乎有 2 个选择:

  1. 意向新 Activity 具有您所需的功能

    Intent rateIntent = new Intent(CurrentActivity.this, NextActivity.class));
    startActivity(rateIntent);
    
  2. 如果您使用片段,您将需要替换您当前的片段,您可以使用 FragmentManager 进行此类应用导航

    NextFragment nextFrag= new NextFragment();
    this.getFragmentManager().beginTransaction()
    .replace(R.id.Layout_container, nextFrag,TAG_FRAGMENT)
    .addToBackStack(null)
    .commit();
    

https://developer.android.com/reference/android/app/FragmentManager.html

https://developer.android.com/reference/android/content/Intent.html

希望对您有所帮助

主要活动xml

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


    <FrameLayout
    android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="fill_parent">


    </FrameLayout>

    <!-- The navigation drawer -->
    <ListView
        android:id="@+id/navdrawer"
        android:layout_width="@dimen/navdrawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:drawSelectorOnTop="false">
    </ListView>

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

我们在点击列表视图项目时在框架布局中添加片段。
创建片段
StopAnimationFragment
StartAnimationFragment
ChangeColorFragment
GitHubPageFragment
ShareFragment
RateFragment
包裹 com.ikimuhendis.ldrawer.sample;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.ikimuhendis.ldrawer.ActionBarDrawerToggle;
import com.ikimuhendis.ldrawer.DrawerArrowDrawable;


public class SampleActivity extends Activity {

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private DrawerArrowDrawable drawerArrow;
    private boolean drawerArrowColor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sample);
        ActionBar ab = getActionBar();
        ab.setDisplayHomeAsUpEnabled(true);
        ab.setHomeButtonEnabled(true);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.navdrawer);


        drawerArrow = new DrawerArrowDrawable(this) {
            @Override
            public boolean isLayoutRtl() {
                return false;
            }
        };
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            drawerArrow, R.string.drawer_open,
            R.string.drawer_close) {

            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();


        String[] values = new String[]{
            "Stop Animation (Back icon)",
            "Stop Animation (Home icon)",
            "Start Animation",
            "Change Color",
            "GitHub Page",
            "Share",
            "Rate"
        };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, values);
        mDrawerList.setAdapter(adapter);
        mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                switch (position) {
                    case 0:
                        mDrawerToggle.setAnimateEnabled(false);
                        drawerArrow.setProgress(1f);
                        //create Fragment and call this method
                        setNavigationFragments(new StopAnimationFragment());
                        break;
                    case 1:
                        mDrawerToggle.setAnimateEnabled(false);
                        drawerArrow.setProgress(0f);
                        //create Fragment and call this method
                        setNavigationFragments(new StopAnimationFragment());
                        break;
                    case 2:
                        mDrawerToggle.setAnimateEnabled(true);
                        mDrawerToggle.syncState();
                        //create Fragment and call this method
                        setNavigationFragments(new StartAnimationFragment());
                        break;
                    case 3:
                        if (drawerArrowColor) {
                            drawerArrowColor = false;
                            drawerArrow.setColor(R.color.ldrawer_color);
                        } else {
                            drawerArrowColor = true;
                            drawerArrow.setColor(R.color.drawer_arrow_second_color);
                        }
                        mDrawerToggle.syncState();
                        //create Fragment and call this method
                        setNavigationFragments(new ChangeColorFragment());
                        break;
                    case 4:

                        //create Fragment and call this method
                        setNavigationFragments(new GitHubPageFragment());
                        break;
                    case 5:
                        //create Fragment and call this method
                        setNavigationFragments(new ShareFragment());
                        break;
                    case 6:
                        //create Fragment and call this method
                        setNavigationFragments(new RateFragment());
                        break;
                }

            }
        });
    }
private void setNavigationFragments(Fragment fragment) {
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container,fragment).commit();
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
                mDrawerLayout.closeDrawer(mDrawerList);
            } else {
                mDrawerLayout.openDrawer(mDrawerList);
            }
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
}