操作栏后退按钮不起作用

Luf*_*ffy 61 android android-actionbar

在这些Android Docs的帮助下.我正在尝试做一个动作栏后退按钮.我得到一个动作栏后退按钮,如下图所示:

在此输入图像描述

输出:

但我的问题是看完画廊图像后我按下了action bar back button.

然后it is not working.但它必须go back to previous page.

下面列出的是编码.

GalleryActivity.java:

    import android.app.ActionBar;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.NavUtils;
    import android.view.MenuItem;

    import com.fth.android.R;

   public class GalleryActivity extends FragmentActivity {

    private int position;
    private static String id;
    private static String name;
    private DemoCollectionPagerAdapter mDemoCollectionPagerAdapter;
    private ViewPager mViewPager;


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

            position = getIntent().getExtras().getInt("position");

            id = getIntent().getExtras().getString("id");

            name = getIntent().getExtras().getString("name");

            mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager());

            // Set up action bar.
            final ActionBar actionBar = getActionBar();


            actionBar.setDisplayHomeAsUpEnabled(true);

           // getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_USE_LOGO|ActionBar.DISPLAY_HOME_AS_UP);

            // Set up the ViewPager, attaching the adapter.
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(mDemoCollectionPagerAdapter);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case android.R.id.home:

                    Intent upIntent = new Intent(this, HomeActivity.class);
                    upIntent.putExtra("position", position);
                    if (NavUtils.shouldUpRecreateTask(this, upIntent)) {

                        TaskStackBuilder.from(this)
                                .addNextIntent(upIntent)
                                .startActivities();
                        finish();
                    } else {

                        NavUtils.navigateUpTo(this, upIntent);
                    }
                    return true;
            }
            return super.onOptionsItemSelected(item);
        }


      }
Run Code Online (Sandbox Code Playgroud)

GalleryDetailFragment.java:

import com.sit.fth.model.GalleryDetail;
import com.sit.fth.util.APIServiceHandler;
import com.sit.fth.util.AppConstants;
import com.sit.fth.util.AppPromoPager;

public class GalleryDetailFragment extends BaseFragment implements
        PromoPagerListener {


    private TextView countView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        this.setHasOptionsMenu(true);
        id = getArguments().getString("id");
        name = getArguments().getString("name");
        View view = inflater.inflate(R.layout.app_pager, null);



        return view;
    }

}
Run Code Online (Sandbox Code Playgroud)

如果你知道如何解决这些问题,任何人都可以帮助我.谢谢.

Luf*_*ffy 159

我通过添加以下编码解决了这些问题GalleryActivity.

ActionBar actionBar;
actionBar=getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

@Override
public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) {
        case android.R.id.home: 
            onBackPressed();
            return true;
        }

    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

MainActivity中:

先前,

公共类HomeActivity扩展了BaseActivity

然后我换成了

公共类HomeActivity扩展了FragmentActivity

GalleryFragment中:

我用Intent它来传递给GalleryActivity.

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Gallery gallery = (Gallery) arg0.getAdapter().getItem(arg2);

        Intent intent = new Intent(getActivity(), GalleryActivity.class);
        intent.putExtra("position", position);
        intent.putExtra("id", gallery.getGalId());
        intent.putExtra("name", gallery.getAlbumTitle());
        startActivity(intent);

        // mCallback.OnGalItemSelected(gallery.getGalId(),gallery.getAlbumTitle());
    } 
Run Code Online (Sandbox Code Playgroud)


x90*_*x90 32

请阅读本文

你应该有这样的东西:

    <activity
        android:name="com.sit.fth.activity.HomeActivity"
        android:screenOrientation="portrait">

    </activity>
    <activity
        android:name="com.sit.fth.activity.GalleryActivity"
        android:screenOrientation="portrait"
        android:parentActivityName="com.sit.fth.activity.HomeActivity">

    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.sit.fth.activity.HomeActivity"/>

   </activity>
Run Code Online (Sandbox Code Playgroud)


然后调用NavUtils.navigateUpFromSameTask(this)将导致导航到父活动(HomeActivity).


Cha*_*ndo 13

您需要在onCreate方法中调用setDisplayHomeAsUpEnabled(true)方法,并重写 onSupportNavigateUp()并在其中调用onBackPressed(),如下所示。而已。完成:)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_help);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*pta 9

试试吧

首先,您需要addToBackStack()commit()Fragments 之前使用它

@Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
         // Respond to the action bar's Up/Home button
         case android.R.id.home:
             if(getSupportFragmentManager().getBackStackEntryCount()>0)
                getSupportFragmentManager().popBackStack();
             return true;
         }
         return super.onOptionsItemSelected(item);
     } 
Run Code Online (Sandbox Code Playgroud)

  • 这是什么,你能解释一下吗? (3认同)

小智 9

您只需将以下行添加到manifest.xml中的活动中即可。父活动是您要返回的活动。

    android:parentActivityName=".activities.MainActivity"
Run Code Online (Sandbox Code Playgroud)


Vai*_*akh 6

最好和简单的答案是在清单文件中添加父活动名称,这样操作栏后退按钮就可以工作了。

对于在 Manifest File 的 Activity 标签下使用 android:parentActivityName=".MyCustomParentActivity"