Java 如何在打开片段时将操作栏图标更改为后退箭头

Java 如何在打开片段时将操作栏图标更改为后退箭头,java,android,android-fragments,Java,Android,Android Fragments,我正在尝试创建一个应用程序。我想在操作栏中将导航抽屉图标更改为后退箭头,当我打开一个片段并返回到主活动时,使用以下代码单击片段中的后退箭头- public class MainActivity extends FragmentActivity implements OnMapReadyCallback, ConnectionCallbacks, OnConnectionFailedListener,LocationListener{ DrawerLayout mDrawerLayout; L

我正在尝试创建一个应用程序。我想在操作栏中将导航抽屉图标更改为后退箭头,当我打开一个片段并返回到主活动时,使用以下代码单击片段中的后退箭头-

public class MainActivity extends FragmentActivity implements OnMapReadyCallback, ConnectionCallbacks, OnConnectionFailedListener,LocationListener{
 DrawerLayout mDrawerLayout;
 ListView mDrawerList;
 @SuppressWarnings("deprecation")
ActionBarDrawerToggle mDrawerToggle;
 String mTitle="";
 private final String  TAG = this.getClass().getSimpleName();

    LocationRequest mLocationRequest;
    GoogleApiClient mGoogleApiClient;

    LatLng latLng;
    GoogleMap mMap;
    SupportMapFragment mFragment;
    Marker CurrentMarker,NearbyPlace,FindMarker;
    EditText editplace = null;
    Button findbtn = null;
    boolean firstRun = true;
    private Boolean exit = false;


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

    //for connectivity service
    ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
    NetworkInfo nInfo = cManager.getActiveNetworkInfo();
    if (nInfo != null && nInfo.isConnected()) {
        Toast.makeText(this, "Network is available ", Toast.LENGTH_SHORT).show();

        AdView adView = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder()
        //.addTestDevice("abc")
        .build();
        adView.loadAd(adRequest);
    mFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
    mFragment.getMapAsync(this);

    }


    else{
        Toast.makeText(this, "Network is not available ", Toast.LENGTH_SHORT).show();
        Fragment newFragment;
        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        newFragment = new NetworkCheck();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

    editplace = (EditText) findViewById(R.id.editplace);
    findbtn = (Button) findViewById(R.id.findbtn);

    setListnerOnWidget();

    mTitle = (String) getTitle();
    // Getting reference to the DrawerLayout
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.drawer_list);

    // Getting reference to the ActionBarDrawerToggle
    mDrawerToggle = new ActionBarDrawerToggle( this,
        mDrawerLayout,
        R.drawable.ic_drawer,
        R.string.drawer_open,
        R.string.drawer_close){

            /** Called when drawer is closed */
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu();
            }

            /** Called when a drawer is opened */
            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle("Select a menu");
                invalidateOptionsMenu();
            }
    };

    // Setting DrawerToggle on DrawerLayout
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerToggle.setDrawerIndicatorEnabled(true);

    // Creating an ArrayAdapter to add items to the listview mDrawerList
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        getBaseContext(),
        R.layout.drawer_list_item ,
        getResources().getStringArray(R.array.menu)
    );

    mDrawerList.setAdapter(adapter);

    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);




    // Setting item click listener for the listview mDrawerList
    mDrawerList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent,
            View view,
            int position,
            long id) {
            displayView(position);
            // Updating the action bar title
            String[] menu = getResources().getStringArray(R.array.menu);
            mTitle = menu[position];

            mDrawerLayout.closeDrawer(mDrawerList);

        }

        private void displayView(int position) {
            // TODO Auto-generated method stub
            Fragment newFragment;
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            switch (position) {
            case 0:

                newFragment = new Help();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                break;

            case 1:

                newFragment = new ContactUs();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                break;

              case 2:

                transaction.addToBackStack(null);
                getActionBar().setTitle("IQWINER");
                try
                { 
                  Intent i = new Intent(Intent.ACTION_SEND);  
                  i.setType("text/plain");
                  i.putExtra(Intent.EXTRA_SUBJECT, "My application name");
                  String sAux = "\nLet me recommend you this application\n\n";
                  sAux = sAux + "https://play.google.com/store/apps/details?id=com.iqwiner\n\n";
                  i.putExtra(Intent.EXTRA_TEXT, sAux);  
                  startActivity(Intent.createChooser(i, "Choose an action"));

                }
                catch(Exception e)
                { //e.toString();
                } 
                break;

              case 3:
                newFragment = new Suggestion_Address();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                Log.e(TAG, "Suggestion Address button is clicked");
                break;

            }

        }

    });



}

private void setListnerOnWidget() {
    // TODO Auto-generated method stub
    OnClickListener listener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String location = editplace.getText().toString();
            if(location!=null && !location.equals("")){
                  new GeocoderTask().execute(location); 

                }
    }
    };
   findbtn.setOnClickListener(listener);

}



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


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




//for back button 

@Override
public void onBackPressed() {

    if(mDrawerLayout.isDrawerOpen(Gravity.START)){
        mDrawerLayout.closeDrawer(Gravity.START);
       }
    else if(getFragmentManager().getBackStackEntryCount() > 1){
         super.onBackPressed(); 
    }
    else{
        if (exit){
            finish(); // finish activity
        }
        else{
            Toast.makeText(this, "Tap Back again to Exit.",
                    Toast.LENGTH_SHORT).show();
            exit = true;
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    exit = false;
                }
            }, 3 * 1000);
        }
    }
}
公共类MainActivity扩展了FragmentActivity在MapreadyCallback、ConnectionCallbacks、OnConnectionFailedListener、LocationListener上的实现{
抽屉布局mDrawerLayout;
ListView mDrawerList;
@抑制警告(“弃用”)
ActionBarDrawerToggle mDrawerToggle;
字符串mTitle=“”;
私有最终字符串标记=this.getClass().getSimpleName();
位置请求mLocationRequest;
GoogleapClient MGoogleapClient;
LatLng LatLng;
谷歌地图;
支持图片段;
Marker CurrentMarker,NearbyPlace,FindMarker;
EditText-editplace=null;
按钮findbtn=null;
布尔值firstRun=true;
私有布尔退出=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//用于连接服务
ConnectivityManager cManager=(ConnectivityManager)getSystemService(this.CONNECTIVITY_服务);
NetworkInfo nInfo=cManager.getActiveNetworkInfo();
if(nInfo!=null&&nInfo.isConnected()){
Toast.makeText(此“网络可用”,Toast.LENGTH_SHORT).show();
AdView AdView=(AdView)findViewById(R.id.AdView);
AdRequest AdRequest=新建AdRequest.Builder()
//.addTestDevice(“abc”)
.build();
adView.loadAd(adRequest);
MFFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
getMapAsync(这个);
}
否则{
Toast.makeText(此“网络不可用”,Toast.LENGTH_SHORT.show();
新片段;
FragmentTransaction=getFragmentManager().beginTransaction();
newFragment=newnetworkcheck();
事务.替换(R.id.content\u frame,newFragment);
transaction.addToBackStack(空);
commit();
}
editplace=(EditText)findViewById(R.id.editplace);
findbtn=(按钮)findviewbyd(R.id.findbtn);
setListnerOnWidget();
mTitle=(字符串)getTitle();
//获取对抽屉布局的引用
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.drawer\u列表);
//获取对ActionBarDrawerToggle的引用
MDRAWERTOGLE=新操作BARDRAWERTOGLE(此,
mDrawerLayout,
R.可抽出式ic_抽屉,
R.string.drawer\u打开,
右弦抽屉(U关闭){
/**抽屉关闭时调用*/
公共无效onDrawerClosed(视图){
getActionBar().setTitle(mTitle);
无效操作菜单();
}
/**打开抽屉时调用*/
打开图纸上的公共空白(视图抽屉视图){
getActionBar().setTitle(“选择菜单”);
无效操作菜单();
}
};
//设置抽屉在抽屉布局上切换
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.setDrawerIndicatorEnabled(true);
//创建ArrayAdapter以将项添加到listview mDrawerList
ArrayAdapter适配器=新的ArrayAdapter(
getBaseContext(),
R.布局.抽屉清单项目,
getResources().getStringArray(R.array.menu)
);
mDrawerList.setAdapter(适配器);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
//listview mDrawerList的设置项单击侦听器
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效MClick(AdapterView父级、,
视图视图,
int位置,
长id){
显示视图(位置);
//更新操作栏标题
String[]menu=getResources().getStringArray(R.array.menu);
mTitle=菜单[位置];
mDrawerLayout.closeDrawer(mDrawerList);
}
私有void显示视图(内部位置){
//TODO自动生成的方法存根
新片段;
FragmentTransaction=getFragmentManager().beginTransaction();
开关(位置){
案例0:
newFragment=newhelp();
事务.替换(R.id.content\u frame,newFragment);
transaction.addToBackStack(空);
commit();
打破
案例1:
newFragment=newcontactus();
事务.替换(R.id.content\u frame,newFragment);
transaction.addToBackStack(空);
commit();
打破
案例2:
transaction.addToBackStack(空);
getActionBar().setTitle(“IQWINER”);
尝试
{ 
意向i=新意向(意向.行动\发送);
i、 setType(“文本/普通”);
i、 putExtra(Intent.EXTRA_主题,“我的申请名称”);
String sAux=“\n请让我向您推荐此应用程序\n\n”;
sAux=sAux+”https://play.google.com/store/apps/details?id=com.iqwiner\n\n“;
i、 putExtra(Intent.EXTRA_TEXT,sAux);
startActivity(Intent.createChooser(i,“选择动作”);
}
捕获(例外e)
{//e.toString();
} 
打破
案例3:
newFragment=新建议\地址();
事务.替换(R.id.content\u frame,newFragment);
transaction.addToBackStack(空);
commit();
Log.e(标签“建议A
      mDrawerToggle.setDrawerIndicatorEnabled(true);

            // Creating an ArrayAdapter to add items to the listview mDrawerList
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getBaseContext(),
                R.layout.drawer_list_item ,
                getResources().getStringArray(R.array.menu)
            );

            mDrawerList.setAdapter(adapter);

            getActionBar().setHomeButtonEnabled(true);
            getActionBar().setDisplayHomeAsUpEnabled(true);
  // Setting item click listener for the listview mDrawerList
    mDrawerList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent,
            View view,
            int position,
            long id) {
            displayView(position);
            // Updating the action bar title
            String[] menu = getResources().getStringArray(R.array.menu);
            mTitle = menu[position];

            mDrawerLayout.closeDrawer(mDrawerList);

        }

        private void displayView(int position) {
            // TODO Auto-generated method stub
            Fragment newFragment;
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            switch (position) {
            case 0:

                newFragment = new Help();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                break;

            case 1:

                newFragment = new ContactUs();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                break;

              case 2:

                transaction.addToBackStack(null);
                getActionBar().setTitle("IQWINER");
                try
                { 
                  Intent i = new Intent(Intent.ACTION_SEND);  
                  i.setType("text/plain");
                  i.putExtra(Intent.EXTRA_SUBJECT, "My application name");
                  String sAux = "\nLet me recommend you this application\n\n";
                  sAux = sAux + "https://play.google.com/store/apps/details?id=com.iqwiner\n\n";
                  i.putExtra(Intent.EXTRA_TEXT, sAux);  
                  startActivity(Intent.createChooser(i, "Choose an action"));

                }
                catch(Exception e)
                { //e.toString();
                } 
                break;

              case 3:
                newFragment = new Suggestion_Address();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                Log.e(TAG, "Suggestion Address button is clicked");
                break;

            }

        }

    });
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

                // This method will trigger on item Click of navigation menu
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {


                    //Checking if the item is in checked state or not, if not make it in checked state
                    if (menuItem.isChecked()) menuItem.setChecked(false);
                    else menuItem.setChecked(true);

                    //Closing drawer on item click
                    drawerLayout.closeDrawers();

                    //Check to see which item was being clicked and perform appropriate action
                    switch (menuItem.getItemId()) {


                        //Replacing the main content with ContentFragment Which is our Inbox View;
                        case R.id.drawer_home:
                            txt_title.setText("Home");
                            Intent intent=new Intent(HomeActivity.this, HomeActivity.class);
                            startActivity(intent);
                            finish();
                            return true;
                   case R.id.drawer_artist:

                    txt_title.setText("Artists");
                    android.support.v4.app.FragmentManager fragmentManager=getSupportFragmentManager();
                    android.support.v4.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
                    fragmentTransaction.replace(R.id.content_frame, new ArtistsFragment());
                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.commit();
                    return true;

                case R.id.drawer_myplaylist:

                    txt_title.setText("My Playlists");
                    fragmentManager = getSupportFragmentManager();
                    fragmentTransaction = fragmentManager.beginTransaction();
                    fragmentTransaction.replace(R.id.content_frame, new PlayListFragment());
                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.commit();
                    return true;

                        default:
                            Toast.makeText(getApplicationContext(), "Somethings Wrong", Toast.LENGTH_SHORT).show();
                            return true;

                    }
                }
            });
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:elevation="4dp"
    android:layout_height="fill_parent"
    >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"

        >
        <include
            android:id="@+id/tool_bar"
            layout="@layout/toolbar"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            />


        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/home">


         //Your layout
        </FrameLayout>
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:background="@drawable/bg_all"
        app:itemIconTint="@android:color/white"
        app:itemTextColor="@android:color/white"
        app:theme="@style/list_item_appearance"
        app:menu="@menu/drawer_menu" >

    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
getSupportFragmentManager().addOnBackStackChangedListener(
                new FragmentManager.OnBackStackChangedListener() {
                    @Override
                    public void onBackStackChanged() {
                        if (getSupportFragmentManager()
                                .getBackStackEntryCount() > 0) {
                            getSupportActionBar()
                                    .setDisplayHomeAsUpEnabled(true); // show
                            // back button
                            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    onBackPressed();
                                }
                            });
                        } else {
                            // show hamburger
                            getSupportActionBar()
                                    .setDisplayHomeAsUpEnabled(false);
                            mDrawerToggle.syncState();
                            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    drawerLayout
                                            .openDrawer(GravityCompat.START);
                                }
                            });
                        }
                    }
                });