0

最初に [追加] ボタンがあり、このボタンをクリックすると、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 番目のアクティビティに再び移動します。しかし、私は理解できません、それの何が問題なのですか。

4

0 に答える 0