0
我知道onCreateOptionsMenu只在活動中調用過一次,但可以在onOptionsItemSelected上設置網絡檢查嗎?從Android的選項菜單進行網絡檢查
我已經嘗試使用ConnectivityManager網絡檢查時選擇一個項目,但它始終返回true ...我不確定是否設置onCreateOptionsMenu時調用,然後鎖定在網絡狀態。
這裏是我的代碼:
public void refreshCheck(){
try
{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm == null)
isAvailable = false;
else
isAvailable = cm.getActiveNetworkInfo().isAvailable();
}
catch(Exception e){}
if(isAvailable == true)
{
listDataPopulate();
}
else
{
Toast refresherror = Toast.makeText(this, "Connection interrupted. Unable to refresh.", duration);
refresherror.show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.news_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId())
{
case R.id.aboutMenuItem:
AlertDialog.Builder alert=new AlertDialog.Builder(this);
alert.setTitle("About App").setMessage("About this app....").setNeutralButton("OK", null).show();
break;
case R.id.refreshNewsMenuItem:
refreshCheck();
break;
default:
}
{
}
return super.onOptionsItemSelected(item);
}
爲什麼不在onCreate中進行檢查? – Guardanis
代碼看起來很好,只要在該外部函數中聲明瞭cm,它*就不應該設置在onCreateOptionsMenu中。然而,當你調用onCreateOptionsMenu時,即使網絡斷開連接,你是否確定它返回true? – matt5784
@Cruceo我知道onCreate只會被調用一次,所以如果他們成功加載這個rss feed,它會一直說它在線。我想在嘗試刷新Feed之前檢查它們是否仍處於聯機狀態。事實上,它會使應用程序崩潰,因爲如果我離線,它仍會嘗試獲取數據。 –