次の問題が発生しました。ユーザーがUIでメニュー項目をクリックした後、これらを実行しますアクティビティでfindViewByIdを呼び出すタイミング
Spinner domainSpinner = (Spinner) findViewById(R.id.domain);
domainSpinner.setVisibility(View.VISIBLE);
: は、私は次のコード行を持っています。だから私はUIが画面に描かれていることを確信しています。スピナーは画面上にあり、既にデータで満たされている必要があります。 メニュー項目は、画面の言語を変更することです。スピナーは、新しく選択された言語の項目でいっぱいにする必要があります。
GooglePlayでは、2行目にstackTraceがNullPointerExceptionを返すエラーレポートが表示されることがあります。したがって、domainSpinnerがnullである必要があります。
私はこの問題を自分で経験したことがありません。また、私たちは自分のためにベータ版のアプリケーションを使用していますが、私の同僚の誰もこの問題を抱えていません。
findViewByIdがnullを返すことがある理由がわかりません。私は前進、前進、回転を試みました....しかし、私はこの問題は決してありません。
R.id.domainという項目は、GONEの可視性をプログラムで設定できることに注意してください。しかし、私もこれで遊んだが問題を再現できませんでした。メニュー項目のアクションの
コード:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.action_nl)
{
changeLanguage("nl", true);
return true;
}
else if (id == R.id.action_fr)
{
changeLanguage("fr", true);
return true;
}
else if (id == R.id.action_en)
{
changeLanguage("en", true);
return true;
}
else if (id == R.id.action_de)
{
changeLanguage("de", true);
return true;
}
return super.onOptionsItemSelected(item);
}
ボタン上でonClickListenerを設定するコードスニペットを共有してください。 –
"onPause"コールの後にコードセグメントが呼び出される可能性はありますか?おそらく、いくつかの非同期メカニズムを介して。 – DeeV
は、何らかの種類の競合状態である可能性があります。いくつかのデバイスでは、スピナービューはまだ呼び出されているときにビューツリーに追加されません。 –