最初に [追加] ボタンがあり、このボタンをクリックすると、2 番目のアクティビティにインテントが送信されます。2 番目のアクティビティには、2 つの EditText ビューと [保存] ボタンがあります。保存を押した後、最初のアクティビティに戻り、onActivityResult 関数 TextView と 2 つのボタン (編集と移動) で作成します。これらのボタンを押しても何も起こりません。
これは私のコードです:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == AddingRecipe)
{
if(resultCode == RESULT_OK)
{
LinearLayout ll2 = new LinearLayout(this);
ll2.setOrientation(LinearLayout.HORIZONTAL);
TextView tv = new TextView(this);
tv.setId(id);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
String disease = data.getStringExtra(AddEditRecipesActivity.Disease);
String doctor = data.getStringExtra(AddEditRecipesActivity.Doctor);
tv.setText(disease +"\nВрач: "+ doctor);
ll2.addView(tv);
ImageButton edit = new ImageButton(this);
edit.setId(id);
edit.setClickable(true);
edit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ViewGroup parent = (ViewGroup)LayoutInflater.from(RecipesActivity.this).inflate(R.layout.activity_recipes, null);
for (int i = 0; i < parent.getChildCount(); i++) {
View child = parent.getChildAt(i);
if(child.getClass() == TextView.class && child.getId() == v.getId())
{
TextView tv2 = (TextView)child;
Intent i3 = new Intent(RecipesActivity.this, AddEditRecipesActivity.class);
i3.addFlags(EditingRecipe);
i3.putExtra(EditRecipe, tv2.getText().toString());
startActivityForResult(i3, EditingRecipe);
}
}
}
});
edit.setBackgroundResource(R.drawable.edit);
ll2.addView(edit);
id = id + 1;
ImageButton go = new ImageButton(this);
go.setId(id);
go.setClickable(true);
go.setBackgroundResource(R.drawable.go);
go.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ViewGroup parent = (ViewGroup)LayoutInflater.from(RecipesActivity.this).inflate(R.layout.activity_recipes, null);
for (int i = 0; i < parent.getChildCount(); i++) {
View child = parent.getChildAt(i);
if(child.getClass() == TextView.class && child.getId() == v.getId())
{
TextView tv2 = (TextView)child;
Intent i3 = new Intent(RecipesActivity.this, MedicineActivity.class);
i3.putExtra(ShowRecipe, tv2.getId());
RecipesActivity.this.startActivity(i3);
}
}
}
});
id = id + 1;
ll2.addView(go);
ll.addView(ll2);
}
}
}
私の間違いは何ですか?関数から onClick に onClickListener を配置すると、アプリケーションがクラッシュします。
ありがとう。
更新: デバッガーが OnClick 関数にステップ インしました。OnClick 関数のループに問題がある可能性があります。TextView と編集ボタンを同じ ID で識別し、ループ内で、Activity のすべてのビューで TextView をボタン ID で検索します。そして、TextView でデータを編集するための 2 番目のアクティビティに再び移動します。しかし、私は理解できません、それの何が問題なのですか。