无法从新活动中的Intent接收数据。

时间:2014-03-13 06:35:39

标签: java android android-intent nullpointerexception android-activity

好吧,正如我在标题中提到的,我无法从一个活动获取数据到另一个活动。我正在制作一个非常简单的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中提供完整的代码或完整的项目。

6 个答案:

答案 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活动是否有额外内容。