0

あるページから別のページに値を渡したいのですが、コードは次のとおりです。

public class main extends Activity implements OnClickListener {

private static final String TAG = "AskMeShowMe2";
private String choice = null;
private String fname = null;
private Menu myMenu = null;
 final static int START =0;



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG,"Main - onCreate() ...");
    setContentView(R.layout.activity_main);

    View promptButton = findViewById(R.id.submit_button);
    promptButton.setOnClickListener((OnClickListener) this);
}

public void onClick(View v) {
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.greetingsRadioGroup);
    int checkedRadioButton = radioGroup.getCheckedRadioButtonId();

    switch (checkedRadioButton) {
    case R.id.mrButton : 
      choice = "Mr.";
      break;
  case R.id.mrsButton : 
      choice = "Mrs.";
      break;
  case R.id.msButton: 
      choice = "Ms.";
      break;
  case R.id.drButton: 
      choice = "Dr.";
      break;
    }
    switch(v.getId()){
    case R.id.submit_button:
        Intent j = new Intent(this, Info.class);
        j.putExtra("choice", choice); 
        startActivity(j);
        fname=String.valueOf(R.id.firstname);
        Intent t = new Intent(this, Info.class);
        j.putExtra("fname", fname); 
        startActivity(t);

        break;
    }
}

そしてそれは他のInfo.Class:

public class Info extends Activity {
private static final String TAG = "Info";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.info);

    Intent myIntent = getIntent(); 
    Bundle b = myIntent.getExtras(); 
    String choice = b.getString("choice"); 
    String fname = b.getString("fname");

   Log.i(TAG,"selection: " + choice); 
   TextView textView = (TextView) findViewById(R.id.showmeText); 
   textView.append(": " + choice); 
   TextView textView1 = (TextView) findViewById(R.id.fname); 
   textView1.append(": " + fname); 

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my_menu, menu);
    return true;
}

}

このプログラムを実行すると、送信ボタンをクリックしてもInfo.classページが表示されません。修正方法を教えてください。

4

2 に答える 2

1

使用する

Intent j = new Intent(this, Info.class);
j.putExtra("choice", choice); 
fname=String.valueOf(R.id.firstname);
j.putExtra("fname", fname); 
startActivity(j);

それ以外の

 Intent j = new Intent(this, Info.class);
    j.putExtra("choice", choice); 
    startActivity(j);
    fname=String.valueOf(R.id.firstname);
    Intent t = new Intent(this, Info.class);
    j.putExtra("fname", fname); 
    startActivity(t);

現在、startActivityを1回目intent jと2回目に2回呼び出してintent tいるため、1つを削除し、choiceとfnameの両方を単一のインテントに入れてstartActivityを1回だけ呼び出します。

于 2012-10-08T05:27:51.070 に答える
1

Switchブロックを次のように変更します。

switch(v.getId()){
    case R.id.submit_button:
        Intent j = new Intent(this, Info.class);
        j.putExtra("choice", choice); 
        fname=String.valueOf(R.id.firstname);
        j.putExtra("fname", fname); 
        startActivity(j);

        break;
    }

アクティビティ情報を2回開始しているので、以前に開始された1つのインテントにのみエクストラを追加します。

于 2012-10-08T05:28:48.347 に答える