我正在使用 HTC Desire (Gingerbread 2.3.7) 和 Google Nexus 7 (Jelly Bean 4.3) 开发我的 Android 项目。我需要将一些数据从 MainActivity 发送到 InfoActivity,所以我使用了一个意图。在这个 InfoActivity 中,我还在操作栏中有一个菜单项来刷新信息。
在 InfoActivity 中,我向用户显示数据。但这不是问题,问题出在菜单上。看下面的代码:
public class ShowInfoActivity extends ActionBarActivity {
private MenuItem menuItem = null;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
new OneTask().execute(...);
// ...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
case R.id.refresh:
menuItem = item;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private class OneTask extends AsyncTask<Object, Void, String> {
// ...
@Override
protected void onPreExecute() {
MenuItemCompat.setActionView(menuItem,
R.layout.actionbar_indeterminate_progress);
MenuItemCompat.expandActionView(menuItem);
}
// ...
@Override
protected void onPostExecute(String result) {
MenuItemCompat.collapseActionView(menuItem);
MenuItemCompat.setActionView(menuItem, null);
}
}
很显然,第一次执行时,menuItem=null,所以它一定会崩溃。令人难以置信的是,在 HTC 中它运行良好,但在 Nexus 中它显然崩溃了。为什么这在设备之间有所不同?
PS:我已经解决了,但我想知道为什么这种行为......