0

onCreateOptionsMenuはアクティビティで1回だけ呼び出されることを知っていますが、onOptionsItemSelectedにネットワークチェックを設定することは可能ですか?

アイテムが選択されたときに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);
}
4

1 に答える 1

1

代わりに、ロジックチェック(および見つけたものに対する反応)をonPrepareOptionsMenu()内に配置します。

このメソッドは、初めてではなく、オプションメニューを開くたびに呼び出されます。このように、ユーザーがオプションを開くたびに接続があるかどうかをチェックするため、更新オプションが表示されます。

于 2012-06-13T17:24:46.500 に答える