Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 工具栏的“后退”按钮不工作_Android_Android Toolbar - Fatal编程技术网

Android 工具栏的“后退”按钮不工作

Android 工具栏的“后退”按钮不工作,android,android-toolbar,Android,Android Toolbar,我的应用程序的详细活动如下所示 添加菜单项时,工具栏的“后退”按钮不起作用。如果我把它们拿出来,一切都很好。以下是我针对该特定活动的代码 public class DetailActivity extends AppCompatActivity { ImageView mImageView; TextView mTitle; TextView mDate; TextView mDescription; private String newsTitle; private String news

我的应用程序的详细活动如下所示

添加菜单项时,工具栏的“后退”按钮不起作用。如果我把它们拿出来,一切都很好。以下是我针对该特定活动的代码

public class DetailActivity extends AppCompatActivity {

ImageView mImageView;
TextView mTitle;
TextView mDate;
TextView mDescription;

private String newsTitle;
private String newsImage;
private String newsDate;
private String newsDescription;
private static String NEWS_SHARE_HASHTAG ="#PopularMoviesApp";
private String date1;
private String date2;
private String newsUrl;

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

    Toolbar toolbar = (Toolbar)findViewById(R.id.detail_toolbar);
    setSupportActionBar(toolbar);

    if(getSupportActionBar() != null){
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    Intent i = getIntent();

    mImageView = (ImageView)findViewById(R.id.detail_image_view);
    mTitle = (TextView)findViewById(R.id.detail_title);
    mDate = (TextView)findViewById(R.id.detail_publish_date);
    mDescription = (TextView)findViewById(R.id.detail_description);

    newsImage = i.getStringExtra("image");
    newsTitle = i.getStringExtra("title");
    newsDate = i.getStringExtra("date");
    newsDescription = i.getStringExtra("description");
    newsUrl = i.getStringExtra("url");

    date1 = newsDate.substring(0,10);
    date2 = newsDate.substring(11,19);

    Picasso.with(this).load(newsImage)
            .placeholder(R.drawable.ic_broken_image)
            .into(mImageView);

    mTitle.setText(newsTitle);
    mDescription.setText(newsDescription);
    mDate.setText(date2 + ", " + date1);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.detail_menu,menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);

    if(item.getItemId() == R.id.detail_browser_btn){
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(newsUrl));
        startActivity(browserIntent);
    }else if(item.getItemId() == R.id.detail_share_btn){
        Intent shareIntent = createShareNewsIntent();
        startActivity(shareIntent);
    }

    return true;
}

private Intent createShareNewsIntent() {
    Intent shareIntent = ShareCompat.IntentBuilder.from(this)
            .setType("text/plain")
            .setText(mTitle + NEWS_SHARE_HASHTAG + "\n\n\n" + newsTitle
                    + "\n\n\n" + newsDescription
                    + "\n\n\n" + newsDate)
            .getIntent();

    return shareIntent;
}
}

如何解决此问题?

在itemselectedmethod中尝试这种方法

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if(id == android.R.id.home){
        finish();
    }
    return super.onOptionsItemSelected(item);
}
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.homeAsUp:
                finish();
                return true;

        }
        finish();
        return true;
    }

在itemselectedmethod中尝试这种方法

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.homeAsUp:
                finish();
                return true;

        }
        finish();
        return true;
    }

到您的OnOptionItemSelected覆盖

这样,当您点击该按钮时,您将调用onBackPressed方法,这是返回比野蛮调用finish更干净的解决方案的默认操作

这样就可以了。

添加

到您的OnOptionItemSelected覆盖

这样,当您点击该按钮时,您将调用onBackPressed方法,这是返回比野蛮调用finish更干净的解决方案的默认操作


应该可以了。

用以下代码试试:

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

请使用以下代码进行尝试:

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

这是一个很好的答案,但我不认为这是一种专业的方式…你是什么意思?这是一个很好的答案,但我不认为这是一种专业的方式…你是什么意思?