ここ数時間、ロード時にエラー メッセージが表示されずにアプリケーションがクラッシュする原因を突き止めました。
基本的に、USB またはエミュレーターで実行すると、画面は 0.5 秒ごとに更新されます。ログを見るとonCreateをループで実行しているようです。理由がわかりません!最終的に、「チャンネルは回復不能なほど破損しているため、破棄されます」というメッセージが大量に表示されます。このメッセージも頻繁に表示されます。
07-15 13:59:22.334: エラー/AbstractCompatWrapper(381): AbstructCompatWrapper への無効な入力 07-15 13:59:22.334: エラー/CompatUtils(381): 呼び出し中の例外: NullPointerException
必要に応じて完全なログを投稿できますが、有用なものは見つかりませんでした。
最後に、アクション バーをインスタンス化するメソッドである「fillActionBar」の呼び出しを削除すると、問題が「修正」されることがわかりました。ただし、アクションバーは使えるようにしたい!私は何を間違えましたか?
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
resultBox = (TextView) findViewById(R.id.readout_values);
// commenting out the following line fixes the problem,
// but removes the action bar.
this.actionBar = fillActionBar();
try {
specialHttpClient = new SpecialHttpClient(
"username", "password");
} catch (Exception e) {
Dbg.loge(this.getClass().getName(), "Could not instantiate client", e);
}
}
private ActionBar fillActionBar() {
ActionBar bar = getActionBar();// getSupportActionBar();
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
//R.layout.sherlock_spinner_item,
pages
);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ActionBar.OnNavigationListener navListener = new ActionBar.OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Intent i = null;
switch(itemPosition) {
case 0:
i = new Intent(context, RecorderActivity.class);
break;
case 1:
i = new Intent(context, TrackerActivity.class);
break;
}
startActivity(i);
return true;
}
};
bar.setListNavigationCallbacks(spinnerAdapter, navListener);
return bar;
}
**編集**
問題は、ボタンが押されていない場合でも startActivity(i) が呼び出されているようです。その呼び出しを 2 番目のメニュー項目に移動しても問題は解決しないようですが、なぜこのようなことが起こっているのでしょうか?