これは私の最初の質問はstackoverflowで尋ねられています。私の質問は、さまざまなリサイクル可能なインテントでのさまざまな使用に関するものです。異なるインテントで変数を使用して更新する
eはこのように宣言されています。
final Bundle e=getIntent().getExtras();
ここでは、別のsetOnClickListener()に対して新しいインテントを作成し、それぞれのインテントごとに異なる変数を渡しています。
Intent info = new Intent(EItemListView.this, ItemInfo.class);
Bundle extras = new Bundle();
int[] a=new int[listview.getAdapter().getCount()];
if (i == 0) {
extras.putIntArray("img", n5x_images);
extras.putString("info", n5x_info);
extras.putInt("pc",a[0]);
} else if (i == 1) {
extras.putIntArray("img", op3_images);
extras.putString("info", op3_info);
extras.putInt("pc",a[1]);
}
info.putExtras(extras);
startActivity(info);
さて、これは私が意図エキストラを通過した変数を更新しようとしているが、これらの変数を更新することができませんしていますOnClickListener()です。
addtc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int c=e.getInt("pc");
c=c+1;
Log.i("Log","value "+c);
}
iは、上記の方法から得るログメッセージは、私はC言語で変数は常に0に設定し、1ずつインクリメントし、従って、ログメッセージは、私は、変数を必要とする1 を示していると思い、常に1でありますa [0]、a [1]、a [2]などをインクリメントしてインクリメント操作を行います。
もっと明確にするために、これは私が使用しているJavaファイルです。エラーは、このコードの最後にあるaddtcボタンのOnClickListenerにあります。事前に
public class ItemInfo extends AppCompatActivity {
private ViewAnimator viewanimator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_info);
Button next=(Button)findViewById(R.id.bnext);
Button prev=(Button)findViewById(R.id.bprev);
viewanimator=(ViewAnimator)findViewById(R.id.viewAnimator);
TextView info=(TextView)findViewById(R.id.item_info);
Button addtc=(Button)findViewById(R.id.badd);
Button test=(Button)findViewById(R.id.button);
Bundle e=getIntent().getExtras();
int img[]=e.getIntArray("img");
for(int i=0;i<img.length;i++)
{
ImageView imgview = new ImageView(getApplicationContext());
imgview.setImageResource(img[i]);
viewanimator.addView(imgview);
}
info.setText(e.getString("info"));
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewanimator.showNext();
}
});
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewanimator.showPrevious();
}
});
addtc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int c=e.getInt("pc");
c=c++;
Log.i("Log","value "+c);
}
});
}
}
感謝!私はあなたを与えることができ
'int c = e.getInt(" pc ");'どこでeを初期化していますか? –
そして、バンドルする値を追加する場所でコードをデバッグしようとしましたか? –
をデバッグすると、インテントを渡す前のa [0]かa [1]のどちらの値ですか? –