1

Java コードだけでアクティビティを作成しようとしています。ここでの目標は、前のアクティビティによってそれ自体を満たすアクティビティを作成することです。ショップリスト活動です。ユーザーは前のアクティビティにアイテムを追加し、完全なリストを表示するように要求すると、上記のアクティビティが生成されます。

ここでの問題は、itens 名を持つテキストビューの初期色として赤を設定したいということです。ユーザーがクリックすると、色が緑に変わります。しかし、それをクリックすると、メッセージ indexoutofbounds 例外でアプリケーションが強制的に閉じられます。誰かが私を助けることができますか?

public class Listdinamiccor extends Activity  {


Bundle recebendoparametros;
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listdinamiccor);
    Intent parametro = getIntent();
    recebendoparametros = parametro.getExtras();
    int j = recebendoparametros.getInt("i");


    ScrollView sv = new ScrollView(this);
    LinearLayout ll = new LinearLayout(this);

    ll.setOrientation(LinearLayout.VERTICAL);
    sv.addView(ll);
    final TextView[] tvarray = new TextView[j];
    for (i = 0; i < tvarray.length; i++) {
        String chave = "chave"+i;
        final TextView tv = new TextView(this);
        tvarray[i] = new TextView(this);
        tvarray[i].setText(""+recebendoparametros.getString(chave));
        tvarray[i].setTextColor(Color.RED);
        tvarray[i].setOnClickListener(new View.OnClickListener() {
            int click = 0;
            @Override
            public void onClick(View v) {
                /*if (click == 0) {
                    tvarray[i].setTextColor(Color.GREEN);
                }
                else {
                    tvarray[i].setTextColor(Color.RED);
                }*/
                AlertDialog.Builder alert = new AlertDialog.Builder(Listdinamiccor.this);
                alert.setTitle("dinamico");
                alert.setMessage("eu sou muito dinamico");

            }
        });
        ll.addView(tvarray[i]);
    }

    this.setContentView(sv);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.listdinamiccor, menu);
    return true;
}

}

4

2 に答える 2