2

ある最初の活動から別の活動に意図を送りたい。

最初のアクティビティは、新しいAlertDialogを作成し、ユーザーから番号を受け取り、その番号を最初のアクティビティに送り返すために、2番目のアクティビティにインテントを送信します。最初のアクティビティでは、putExtraデータが失敗しました。

最初のアクティビティのコード:GuessItActivity.java

                    Intent intent = new Intent(GuessItActivity.this,
                        AlertDialogMessage.class);
                intent.addFlags(Intent.FILL_IN_DATA);
                intent.addFlags(Intent.FILL_IN_CATEGORIES);
                intent.addFlags(Intent.FILL_IN_ACTION);
                
                intent.putExtra("data1", 15);
                startActivityForResult(
                        intent,
                        getResources().getInteger(
                                R.integer.ALERT_DIALOG_MESSAGE));

レトリバー側、たとえばAlertDialogMessage.javaの2番目のアクティビティ側

                            public void onClick(DialogInterface dialog,
                                int which) {
                            // "OK" button pressed
                            int userGuess = Integer.parseInt(input
                                    .getText().toString());
                            Intent intent = getIntent();
                            if (intent == null)
                                return;

                            int data1 = intent.getIntExtra("data1", -1);
                            if (data1 != 15 )
                                return; // data1 ==15 
                            
                            intent.putExtra("data2", 25);           
                            if (getParent() == null) {
                                setResult(Activity.RESULT_OK, intent);
                            } else {
                                getParent().setResult(Activity.RESULT_OK,
                                        intent);
                            }
                            finish();

最初のアクティビティ側:GuessItActivity.javaに戻る

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == getResources().getInteger(
            R.integer.ALERT_DIALOG_MESSAGE)) {
        if (resultCode == RESULT_OK) {
            Intent intent = getIntent();
            if (intent==null)
                return; 


              Bundle extra = getIntent().getExtras();
            if (extra != null) {
                int _data1 = extra.getInt("data1");
                int _data2 = extra.getInt("data2");
            }
               // extra  == null , what am I doing wrong  ? 

            int data1 = intent.getIntExtra("data1",-1);
            int data2 = intent.getIntExtra("data2",-1);
            if ((data1==-1)&&(data1==-1))
                return; 

問題は、-1に等しいdata1とdata2を受け取ることです。

2番目のアクティビティに置いたデータを受け取りたいのですが。例:data1==15およびdata2==25

私は何が間違っているのですか?

4

4 に答える 4

3

試す

Bundle extra=data.getExtras();

の挿入

Bundle extra=getIntent().getExtras();
于 2012-04-13T11:09:18.850 に答える
0

これで試してみてください。

 Bundle extras = getIntent().getExtras();
 int a=extras.getInt("data1");
于 2012-04-13T10:02:15.903 に答える
0

この方法を試してください

  int data1,data2;
  Bundle extra=getIntent().getExtras();
  if(extra!=null){
  data1=extra.getInt("data1");
  data2=extra.getInt("data2");
  }
于 2012-04-13T10:03:51.057 に答える
0

onActivityResultでは、呼び出すことは想定されていません

intent = getIntent();

直接あなたは持っています

protected void onActivityResult(int requestCode, int resultCode, Intent data)

ここで、データはアラートボックスアクティビティから送信されたデータに対応します。直接電話するだけ

data.getIntExtra("data2", -1);

する必要があります。私が十分に明確であったことを願っています。

于 2012-04-16T07:57:28.987 に答える