如何覆盖标准的ActionBar函数?

时间:2013-04-13 17:37:10

标签: android eclipse override android-actionbar

我想覆盖标准的ActionBar,以便在进入上一个活动之前进行一些检查。我想检查是否有东西输入editText,如果是,我想询问是否返回无论输入什么或留在这个窗口。我只想知道在哪里放置if else循环。

这是在onCreate:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // Show the Up button in the action bar.
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

两种方法:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activityB, menu);
    return true;
}

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

1 个答案:

答案 0 :(得分:0)

对用户输入作出反应的地方是onOptionsItemSelected。在ActionBar所需项目的大小写块中,您可以查看if(EditText.getText() != null)是否输入了内容。

编辑:

@Override 
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        if(yourEditText.getText() != null){
            // ask user what to do
        } else {
            // nothing was typed -> move to home activity
            NavUtils.navigateUpFromSameTask(this);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}