androidアプリが強制終了してしまいます。
オプションメニューボタンの「MENU_ITEM0」を押すと、他の機能が呼び出されずに強制終了でエラーになってしまいます。
・呼び出すソースファイルです。
「public class CogoterActivity extends Activity {
//メニューアイテムID
private static final int
MENU_ITEM0=0,
MENU_ITEM1=1;
//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//リスト要素の情報群の生成
List<ListItem> items=new ArrayList<ListItem>();
for (int i=0;i<50;i++) {
items.add(new ListItem(res2bmp(this,R.drawable.icon),"項目"+i));
}
//リストビューの設定
ListView listView=new ListView(this);
listView.setScrollingCacheEnabled(false);
listView.setAdapter(new ListAdapter(this,items));
setContentView(listView);
new TextView(this);
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//メニューアイテム0の追加
MenuItem item0=menu.add(0,MENU_ITEM0,0,"ぶつぶつ");
item0.setIcon(android.R.drawable.ic_menu_edit);
//メニューアイテム1の追加
MenuItem item1=menu.add(0,MENU_ITEM1,0,"ぶくぶく");
item1.setIcon(android.R.drawable.ic_menu_more);
return true;
}
//メニューアイテム選択イベントの処理
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ITEM0:
Intent intent = new Intent(this,
cogoter.project.MyActivity.class);
startActivity(intent);
return true;
case MENU_ITEM1:
showDialog(this,"","ぶくぶくを押した");
return true;
}
return true;
}
//ダイアログの表示
private static void showDialog(Context context,String title,String text) {
AlertDialog.Builder ad=new AlertDialog.Builder(context);
ad.setTitle(title);
ad.setMessage(text);
ad.setPositiveButton("OK",null);
ad.show();
}
//リソース→ビットマップ
public static Bitmap res2bmp(Context context,int resID) {
return BitmapFactory.decodeResource(
context.getResources(),resID);
}
}」
・呼び出されるソースコード
「public class MyActivity extends Activity
implements View.OnClickListener {
private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
private final static int FP=LinearLayout.LayoutParams.FILL_PARENT;
private EditText editText;//エディットテキスト
//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//戻り値の指定(6)
setResult(Activity.RESULT_CANCELED);
//インテントからのパラメータ取得(5)
String text="";
Bundle extras=getIntent().getExtras();
if (extras!=null) text=extras.getString("text");
//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
layout.setBackgroundColor(Color.rgb(255,255,255));
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
//OKボタンの生成
Button button=new Button(this);
button.setText("OK");
button.setOnClickListener(this);
button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC));
layout.addView(button);
//エディットテキストの生成
editText=new EditText(this);
editText.setText(text);
editText.setLayoutParams(new LinearLayout.LayoutParams(FP,WC));
layout.addView(editText);
}
//ボタンクリック時に呼ばれる
public void onClick(View v) {
//戻り値の指定(6)
Intent intent =new Intent();
intent.putExtra("text",editText.getText().toString());
setResult(Activity.RESULT_OK,intent);
//アクティビティの終了(7)
finish();
}
}」
お礼
まだ、完全に原因が理解できたわけではありませんが、問題なく動作するようになりました。 ありがとうございました。