Android中的Actionbar返回按钮无法正常工作

8
我正在创建一款 Android 应用程序,需要添加返回导航功能,这样当用户点击动作栏的主页按钮时,用户将回退到应用程序的前一个屏幕。但是,动作栏主页按钮不响应单击事件。以下是我的代码:
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }
            @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);

        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);


        return rootView;
    } }

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.home:
        Toast.makeText(getApplication(), "Back", Toast.LENGTH_LONG).show();

        break;

    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

你尝试从“Activity”中执行这个操作了吗? - EdmDroid
是的。但它没有响应。 - Jigar Shekh
你的Activity是继承自android.support.v7.app.ActionBarActivity还是仅继承自android.app.Activity?如果只继承自Activity,则应该调用getActionBar();如果继承自ActionBarActivity,则应该调用getSupportActionBar() - EdmDroid
3
此外,在您的 case R.id.home 中,实际上应该是 android.R.id.home - EdmDroid
1
好的。谢谢。我已经将 R.id.home 更改为 android.R.id.home。现在它可以工作了。@hiphopdroid - Jigar Shekh
1
但我不明白为什么我们要使用 case android.R.id.home 而不是 case R.id.home?@hiphopdroid - Jigar Shekh
2个回答

20
case android.R.id.home:

尝试使用这个代替 case R.id.home:


4
请使用android.R.id.home代替R.id.home
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.home:
        Toast.makeText(getApplication(), "Back", Toast.LENGTH_LONG).show();

        break;

    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接