2012-04-13 13 views
2

我不想将意图从一个第一个活动发送到另一个。Android |意图| PutExtra在搜索方不起作用

第一个活动向第二个活动发送一个意图,以创建一个新的AlertDialog,从用户接收一个数字并将该数字发送回第一个活动 - 这是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

      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; 

的问题是,我接收data1和data2的等于-1。

我想收到我在第二项活动中提供的数据。例如data1 == 15和data2 == 25

我做错了什么? 请帮助

小号

回答

3

尝试

Bundle extra=data.getExtras(); 

Bundle extra=getIntent().getExtras(); 
+0

非常感谢,它工作! :) – TripleS 2012-04-13 11:15:55

0

尝试与此有关。

Bundle extras = getIntent().getExtras(); 
int a=extras.getInt("data1"); 
+0

extras == null,你知道接下来应该做什么吗? – TripleS 2012-04-13 10:33:16

+0

已在我的回答中更新。 – atluriajith 2012-04-13 10:57:04

0

尝试这种方式

int data1,data2; 
    Bundle extra=getIntent().getExtras(); 
    if(extra!=null){ 
    data1=extra.getInt("data1"); 
    data2=extra.getInt("data2"); 
    } 
+0

感谢您的回答,我正在取得进展。 extra == null,你知道下一步该怎么办? – TripleS 2012-04-13 10:32:23

+0

@TripleS我不明白你想说什么 – Khan 2012-04-13 10:45:24

+0

你的直觉很好。当我尝试你的代码时,我收到额外的== null,无法继续。另一方面 。我不知道为什么我收到一个空指针。 – TripleS 2012-04-13 10:49:04

0
在onActivityResult

insted的你是不是suppposed调用

在数据对应于从警告框活动发送的数据
intent = getIntent(); 

直接与你已经拿到了

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

。只是直接打电话

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

应该做的。希望我很清楚。