好吧,正如我在标题中提到的,我无法从一个活动获取数据到另一个活动。我正在制作一个非常简单的RSS阅读器,它可以异步加载数据,将它们发送到listview并在新活动的webview中打开所选文章。问题是,当我尝试使用webview启动活动时,无法从主活动传递数据。 所以这就是我在做的事情:
1)在第一个活动(主要活动)中,我从我的listview元素中获取数据,该用户点击:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
News clicked = (News) adapter.getItem(arg2);
String clickedTitle = clicked.title;
String clickedLink = clicked.link;
System.out.println("Title: " + clickedTitle + " / LINK: " + clickedLink); /*Here I can see my data in logs -> they are correct at this moment*/
Intent intent = new Intent(MainActivity.this, OpenFullArticle.class);
intent.putExtra(clickedTitle, "clickedTitle");
intent.putExtra(clickedLink, "clickedLink");
startActivity(intent);
}
});
所以现在一切都很好,但是,当一个新的活动开始时(OpenFullArticle活动),我这样做:
public class OpenFullArticle extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_full_article);
String title = getIntent().getExtras().getString("clickedTitle");
String link = getIntent().getStringExtra("clickedLink");
System.out.println(title); //Tried link too, simultaneous each one - both ar null
}
所以我这一刻陷入困境,不知道,我做错了什么。尝试了debuger,检查了Intent,并且没有额外的东西,我在第一个活动中添加了。 也许你可以给我一个线索,什么可能导致这样一个奇怪的问题。
P.S。如果有必要,我可以在github中提供完整的代码或完整的项目。
答案 0 :(得分:2)
在第一项活动中使用以下代码
Intent intent = new Intent(MainActivity.this, OpenFullArticle.class);
intent.putExtra( "clickedTitle",clickedTitle);
intent.putExtra("clickedLink", clickedLink, );
startActivity(intent);
答案 1 :(得分:2)
更改为
intent.putExtra("clickedTitle", clickedTitle);
// the first pram is the key
// the second is the value
intent.putExtra("clickedLink", clickedLink);
http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,android.os.Bundle)
也可以使用Log
代替System.out.println
。
http://developer.android.com/reference/android/util/Log.html
答案 2 :(得分:1)
错误在于这一行:
intent.putExtra(clickedTitle, "clickedTitle");
intent.putExtra(clickedLink, "clickedLink");
您需要首先输入密钥,然后输入值:
intent.putExtra("clickedTitle", clickedTitle);
答案 3 :(得分:1)
替换
intent.putExtra(clickedTitle, "clickedTitle");
intent.putExtra(clickedLink, "clickedLink");
与
intent.putExtra("clickedTitle",clickedTitle);
intent.putExtra("clickedLink",clickedLink);
答案 4 :(得分:0)
在第一个活动中使用以下代码
Intent intent = new Intent(MainActivity.this, OpenFullArticle.class);
intent.putExtra( "clickedTitle",clickedTitle);
intent.putExtra("clickedLink", clickedLink, );
startActivity(intent);
答案 5 :(得分:0)
最初尝试通过将一些硬编码值传递给extras
来隔离问题像 intent.putExtra( “ID”,1); intent.putExtra( “姓名”, “ABC”);
并检查OpenFullArticle活动是否有额外内容。