2013-12-23 91 views
0

我是android新手。这可能是所有的最简单的问题!但我不明白这里出什么问题了,返回主活动时传递数据(意图)我做错了什么?

我想创建一个基本的例子,通过intent传递值。所以当我关闭第二个活动时,我需要将数据传递给主活动,这里是代码

IntentTest1(MainActivity)

public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
MyClass.myToast("Clicked",getApplicationContext()); 
Intent myIntent = newIntent(getApplicationContext(),SecondPage.class); 
startActivityForResult(myIntent,0); 
     } 
    }); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 

    if(requestCode == 0 && resultCode == RESULT_OK) 
     if(data.hasExtra("title")) 
     { 
    MyClass.myToast(""+resultCode+""+requestCode, getApplicationContext()); 
    String str = data.getExtras().getString("title").toString(); 
    titleText.setText(str); 
     } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

SeconPage

public void finish() 
{ 

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class); 
returnIntent.putExtra("Welcome Back!!","title"); 
setResult(RESULT_OK, returnIntent); 
    //  below was for tosting and it works!! 
MyClass.myToast("finally",getApplicationContext()); 
super.finish(); 
} 

我认为这是在接收意图一些错误,我无法弄清楚。 解答,并建议需要 由于事先

回答

2

第一个问题是当你创建你的Intent发送回第一个Activity。由于您使用的是startActivityForResult(),因此您希望使用空的构造函数。因此,改变

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class); 

Intent returnIntent = new Intent(); 

的第二个问题是,你有你的key/value对向后你Extraskey,这是你所期待的getStringExtra()等...应该是这一对中的第一个。因此,这

应该

returnIntent.putExtra("title", "Welcome Back!!"); 

题外话

我会考虑使用相关的名称作为您的params。例如,我会改变你的onClick()

public void onClick(View arg0) 

public void onClick(View view) 

viewv,或类似的东西更有意义,因为争论其实是一个观点,这将是更具可读性

我也建议您使用ActivityContext为您的Intent,你可以从参数(View)得到onClick()。所以改为

public void onClick(View v) 
{ 
    MyClass.myToast("Clicked",getApplicationContext()); 
    Intent myIntent = newIntent(v.getContext(),SecondPage.class); 
    startActivityForResult(myIntent,0); 
+0

得到了我想要的一切!非常感谢 – Dev

+0

不客气!并回答关于'Context'的另一个答案,以及在哪里使用'this',[见这个很好的答案](http://stackoverflow.com/questions/7298731/when-to-call-activity-context -or-application-context/7298955#7298955) – codeMagic

+0

如果在'listener'内部使用'this',比如'onClick()',它通常会出错,因为它会引用内部类而不是'Activity '。 – codeMagic

0

试试这个代码:

Intent returnIntent = new Intent(getApplicationContext(),Intenttest1.class); 
returnIntent.putExtra("Key name here in ur case title","Value name"); 
setResult(RESULT_OK, returnIntent); 
//  below was for tosting and it works!! 
MyClass.myToast("finally",getApplicationContext()); 
super.finish(); 

}

+0

nope !! :(它不工作!!谢谢无论如何,现在我还有一个疑问?如果它会工作吗?有什么区别?在哪里我可以使用'这个'和在哪里我不能.. – Dev

1

你必须使用

if(data.hasExtra("Welcome Back!!")) 

,而不是

if(data.hasExtra("title")) 

onActivityResultWelcome Back!!是关键,title是您的演员中该键的值。

+0

明白了非常感谢,我在编写代码时应该更仔细:) – Dev

+0

不客气。如果它有帮助,你可以接受答案。 – Apoorv

相关问题