私が正常にハンバーガーと矢印の間NavDrawerのアイコンを変更することを決定した、このコードがトグルする必要があります実際に前のアクティビティに戻る場合は、ナビゲーションドロワーを開きます。DrawerLayout戻るアロー機能
私は単純にonClickListenerを設定することができますが、Androidは以前の画面にナビゲートするよりネイティブな方法があると考えました。ここに私のコードは次のとおりです。」
のonCreate:
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);
}
}
}
}
ありがとうございました!私はそれを撃つだろう。そのドロアブルはAndroid SDKに含まれていますか? – tccpg288
サポートライブラリに含まれています。 –
ああ、実際には、ライブラリのバージョンによっては、別の名前である可能性があります: 'R.drawable.abc_ic_ab_back_material'。 [this post](http://stackoverflow.com/questions/35632576/error-cannot-find-symbol-variable-abc-ic-ab-back-mtrl-am-alpha)を見てください。私はここで私の答えを1分で修正します。 –