我有以下常见问题,很容易,但我不知道我还能做些什么。 我有一个MainActivity,它开始于结果AnotherActivity。
在MainActivity
我(扩展Activity
):
Intent i = new Intent(MainActivity.this, Altele.class);
startActivityForResult(i, 0);
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast something; //toast NOT showing
webview.loadUrl(data.getStringExtra("adresa"));
}
在AnotherActivity
我(扩展ListActivity
):
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Toast something; //toast showing
Intent intentMessage = new Intent();
intentMessage.putExtra("adresa", something);
setResult(RESULT_OK, intentMessage);
finish();
}
现在,无论我做什么,来自AnotherActivity
的数据似乎都没有达到MainActivity
。在这里的示例中,我故意跳过requestCode
和resultCode
,因为它是相同的。所以我在这里,基本上都是在互联网上,但对我来说它不起作用。有什么想法吗?
源代码:http://www3.zippyshare.com/v/13090519/file.html
更新 我注意到了一件事。如果我在应用程序启动后立即开始第二个结果活动,则会触发主活动中的onActivityResult。如果我在应用程序启动后等待2秒或再次尝试运行结果的第二个活动,则不再发生任何事情。
答案 0 :(得分:0)
您正在执行“putExtra”并尝试获取“getStringExtra”。你应该使用“putStringExtra”或“getExtra”。
答案 1 :(得分:0)
可能你可以尝试这个
startActivityForResult(i, **2**);
。 。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
switch (requestCode) {
case **2**:
toast something;//toast NOT showing
webview.loadUrl(data.getStringExtra("adresa"));
break;
}
}
在列表视图中,您可以将其更改为
setResult(0, (new Intent()).setAction(i.getStringExtra("String")));
答案 2 :(得分:0)
你所做的似乎是正确的。我试过了它对我有用..我正在分享我写的示例代码。希望这会有所帮助。
我的主要活动
import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements android.view.View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
System.out.println("abcd");
Toast.makeText(this, data.getStringExtra("abc"), Toast.LENGTH_LONG).show();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.button1){
Intent in = new Intent(MainActivity.this,MainActivity1.class);
startActivityForResult(in, 1);
}
}
}
我的MainActivity1扩展了ListActivity 它工作得很好,并打印出ddms和吐司信息
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity1 extends ListActivity{
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Intent intentMessage=new Intent();
intentMessage.putExtra("abc","def");
setResult(RESULT_OK,intentMessage);
finish();
}
}
答案 3 :(得分:0)
确保您的清单文件不包含您开始的活动的单一任务。
答案 4 :(得分:0)
愿这些帮助你......
不要使用INTENT
在您的活动之间传递数据,而是尝试使用SharedPreference
它可以存储数据,并且可以轻松检索数据。
希望这些能帮到你..
答案 5 :(得分:0)
迟到的答案,但可能对某人有用。我遇到了同样的问题,当我注意到在AndroidManifest.xml文件中的MainActivity定义中我有了这行
android:noHistory="true"
当我将此行更正为
时,问题就消失了android:noHistory="false"
实际上你也可以删除整行(见this link) 希望这也适合你。