Java 抽屉布局后向箭头功能

Java 抽屉布局后向箭头功能,java,android,xml,navigation-drawer,Java,Android,Xml,Navigation Drawer,我已成功确定,要在汉堡和箭头之间更改NavDrawer中的图标,需要切换以下代码: mDrawerToggle.syncState(); 但是,当我单击“上一步”按钮时,它仍在打开导航抽屉,而我确实想返回到上一个活动 我知道我可以简单地设置onClickListener,但我认为Android有一种更自然的方式导航到上一个屏幕。这是我的密码:' 一旦创建: mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

我已成功确定,要在汉堡和箭头之间更改NavDrawer中的图标,需要切换以下代码:

mDrawerToggle.syncState();
但是,当我单击“上一步”按钮时,它仍在打开导航抽屉,而我确实想返回到上一个活动

我知道我可以简单地设置onClickListener,但我认为Android有一种更自然的方式导航到上一个屏幕。这是我的密码:'

一旦创建:

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
            toolbar,  /* nav drawer icon to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description */
            R.string.drawer_close  /* "close drawer" description */
    ) {

        /**
         * Called when a drawer has settled in a completely closed state.
         */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            isOpen = false;
        }

        /**
         * Called when a drawer has settled in a completely open state.
         */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            isOpen = true;
        }
    };
    mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed();
        }
    });
    mDrawerToggle.setDrawerIndicatorEnabled(false);
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    ArrayList<String> drawerTitleArray = new ArrayList<>();
    drawerTitleArray.add(0, "TEST");
    drawerTitleArray.add(1, "TEST 1");
    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, drawerTitleArray));


       // TODO: Add Fragment Code to check if savedInstanceState ==                                 null; add at Activity Level?
    // Check that the activity is using the layout version with
    // the fragment_container FrameLayout


    //set up viewpager for current day
    //mPager = (ViewPager)               findViewById(R.id.home_polls_viewpager_fragment_container);
    //mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    //mPager.setAdapter(mPagerAdapter);


    //get current date to apply to Viewpager
    mDateFormat = new SimpleDateFormat("MM-dd-yyyy");
    mDate = new Date();
    mCurrentDateString = mDateFormat.format(mDate);
    mViewPager = (ViewPager) findViewById(R.id.poll_fragment_container);
    mViewPager.setAdapter(new SectionPagerAdapter(getSupportFragmentManager()));
    mTabLayout.setupWithViewPager(mViewPager);

    // TODO: Checkn if AuthStateListenerNecessary
    //Determine whether necessary to use an AuthStateListener here
    // mUserRef.addAuthStateListener(new Firebase.AuthStateListener() {
    //@Override
    //public void onAuthStateChanged(AuthData authData) {
    //if (authData == null) {
    //Intent backToSignIn = new Intent(getApplication(),       SignupActivity.class);
    //startActivity(backToSignIn);
    //                    finish();
    //                }
    //            }
    //        })




}

@Override
protected void onStart() {
    super.onStart();

    v = new ValueEventListener() {
        //testing methodology of adding children
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int pollsAvailable = (int) dataSnapshot.child(mCurrentDateString).getChildrenCount();
       //                mPagerAdapter.setPollsAvailable(pollsAvailable);
            Log.i("TAG", "There are " + String.valueOf(pollsAvailable) + " children in today's poll count.");
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    };

    mPollsRef.addValueEventListener(v);

}

@Override
protected void onStop() {
    super.onStop();
    mPollsRef.removeEventListener(v);

}

@Override
public void onFragmentInteraction(Uri uri) {

}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    if (item.getItemId() == android.R.id.home){
        super.onBackPressed();
        return true;}
    else
        return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}



@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    //TODO: Be sure to only allow one instance of each activity
    //TODO:Address mDrawerToggle code from StackOverflow to make sure I am correctly implementing the return to previous activity
    // Sync the toggle state after onRestoreInstanceState has occurred.
    //        mDrawerToggle.syncState();
}

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

public class SectionPagerAdapter extends FragmentPagerAdapter {

    public SectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        int pollIndex = mIntentFromTouch.getIntExtra("Poll_Index",0);
        switch (position) {
            case 0:
                PollFragment pollFragment = PollFragment.newInstance(pollIndex);
                return pollFragment;
            case 1:
                DiscussionFragment discussionFragment = DiscussionFragment.newInstance(pollIndex);
                return discussionFragment;
            default:
                return new PollFragment();
        }
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return getResources().getString(R.string.poll_text);
            case 1:
                return getResources().getString(R.string.discussion_text);
            default:
                return getResources().getString(R.string.poll_text);
        }
      }
   }


 }
mDrawerLayout=(抽屉布局)findViewById(R.id.drawer\u布局);
mDrawerToggle=新操作bardrawertoggle(
此,/*主机活动*/
mDrawerLayout,/*抽屉布局对象*/
工具栏,/*导航抽屉图标以替换“向上”插入符号*/
R.string.drawer\u open,/*“open drawer”说明*/
R.string.drawer\u close/*“close drawer”说明*/
) {
/**
*当抽屉处于完全关闭状态时调用。
*/
公共无效onDrawerClosed(视图){
super.onDrawerClosed(视图);
isOpen=假;
}
/**
*当抽屉处于完全打开状态时调用。
*/
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
isOpen=真;
}
};
mDrawerToggle.setToolbarNavigationClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图){
onBackPressed();
}
});
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerList=(ListView)findViewById(R.id.left\u抽屉);
ArrayList drawerTitleArray=新的ArrayList();
添加(0,“测试”);
添加(1,“测试1”);
//设置列表视图的适配器
mDrawerList.setAdapter(新阵列适配器,
R.layout.drawer_list_item,draweritlearray));
//TODO:添加片段代码以检查savedInstanceState==null;在活动级别添加?
//检查“活动”是否正在使用布局版本
//fragment_容器框架布局
//设置当前日期的viewpager
//mPager=(ViewPager)findViewById(R.id.home\u polls\u ViewPager\u fragment\u container);
//mPagerAdapter=新屏幕幻灯片页面适配器(getSupportFragmentManager());
//mPager.setAdapter(mPagerAdapter);
//获取要应用于Viewpager的当前日期
mDateFormat=新的SimpleDataFormat(“MM dd yyyy”);
mDate=新日期();
mCurrentDateString=mDateFormat.format(mDate);
mViewPager=(ViewPager)findViewById(R.id.poll\u fragment\u容器);
setAdapter(新的SectionPagerAdapter(getSupportFragmentManager());
mTabLayout.setupWithViewPager(mviewpage);
//TODO:检查是否需要AuthStateListener
//确定是否需要在此处使用AuthStateListener
//mUserRef.addAuthStateListener(新的Firebase.AuthStateListener(){
//@凌驾
//AuthStateChanged上的公共无效(AuthData AuthData){
//如果(authData==null){
//Intent backToSignIn=newintent(getApplication(),SignupActivity.class);
//星触觉(背向信号);
//完成();
//                }
//            }
//        })
}
@凌驾
受保护的void onStart(){
super.onStart();
v=新值eventlistener(){
//添加儿童的测试方法
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
int pollsAvailable=(int)dataSnapshot.child(mCurrentDateString.getChildrenCount();
//mPagerAdapter.setPollsAvailable(pollsAvailable);
Log.i(“TAG”,“There”+String.valueOf(pollsAvailable)+“今天的投票计数中的子项”);
}
@凌驾
取消后的公共无效(FirebaseError FirebaseError){
}
};
mPollsRef.addValueEventListener(v);
}
@凌驾
受保护的void onStop(){
super.onStop();
mPollsRef.removeEventListener(v);
}
@凌驾
公共void onFragmentInteraction(Uri){
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
if(item.getItemId()==android.R.id.home){
super.onBackPressed();
返回true;}
其他的
返回mDrawerToggle.onOptions ItemSelected(item)| | super.onOptions ItemSelected(item);
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
//TODO:确保每个活动只允许一个实例
//TODO:处理StackOverflow中的mDrawerToggle代码,以确保正确实现返回到上一个活动
//在onRestoreInstanceState发生后同步切换状态。
//mDrawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
公共类Section PageRadapter扩展了FragmentPagerAdapter{
公共部分PageRadapter(碎片管理器fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
int pollIndex=minentFromTouch.getIntExtra(“Poll_Index”,0);
开关(位置){
案例0:
PollFragment PollFragment=PollFragment.newInstance(pollIndex);
返回片段;
案例1:
DiscussionFragment DiscussionFragment=DiscussionFragment.newInstance(pollIndex);
返回讨论片段;
违约:
返回新的PollFragment();
}
}
@凌驾
public int getCount(){
返回2;
}
@凌驾
公共字符序列getPageTitle(int位置){
开关(位置){
案例0:
返回getResources().getString(R.string
mDrawerToggle.setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
mDrawerToggle.setToolbarNavigationClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    }
);
mDrawerToggle.setDrawerIndicatorEnabled(false);