0
我对Android和Java很有新意,对于这个问题,我很抱歉如果我的问题的答案很简单。选项菜单在运行时保持打开状态AsyncTask
问题是,一旦选择了某个菜单项,我需要运行一个相当长(2-3秒)的任务(涉及HTTP请求,并且据我所知我需要执行上述操作与主窗口不同的线程),然后显示从AsyncTask获取的结果的一部分。
一切工作正常,除了在执行AsyncTask的整个过程中菜单保持打开这一事实:我无法找到避免这种情况的方法。
我试图用更短的,而是类似,例如
这里是在MainActivity代码来总结我的问题:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE,1,Menu.NONE,"Text");
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem mi) {
try {
String a = new AsyncTest().execute().get();
Toast.makeText(MainActivity.this,a, Toast.LENGTH_SHORT).show();
return true;
}
catch (Exception e) {
return false;
}
}
}
而这里的的AsyncTask 公共类AsyncTest扩展的AsyncTask {
@Override
protected String doInBackground(Void... params) {
long i;
for (i=0;i<100000000;i++);
return "Lol";
}
}
我试过用closeOptionsMenu();
在onOptionsItemSelected之后,为了关闭菜单之前的As yncTask被执行,但它不起作用。
我在google上没有发现太多的话题。