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上沒有發現太多的話題。