数据FROM片段到活动

时间:2015-05-18 05:02:55

标签: android android-intent android-fragments android-activity start-activity

我尝试使用Activity中的方法将数据从片段传递到活动:

public void setID(int i,int j) {
    theme = i;
    thread = j;
}

然后,从片段中我使用Intent创建活动并使用:

传递数据
private class ListItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) {
        int pos=position+1;
        ThreadActivity threadactivity = new ThreadActivity();
        threadactivity.setID(id,pos);
        Intent q = new Intent(getActivity(), threadactivity.getClass());
        startActivity(q);
    }
}

但是,当活动开始时," i"和" j"我做错了什么?

4 个答案:

答案 0 :(得分:2)

ThreadActivity threadactivity = new ThreadActivity();毫无意义,因为您无法控制活动的创建。该系统。因此,活动之间的所有数据传输都是通过intent完成的,而不是getter和setter。

  Intent q = new Intent(getActivity(),ThreadActivity.class);
  q.putExtra("theme", i);
  q.putExtra("thread" j);
  startActivity(q);

然后使用getIntent().getIntExtra(VARNAME, defaultValue);

获取下一个活动中的值

答案 1 :(得分:2)

您创建的活动和您使用意图启动的活动是不同的。您应该将参数传递给intent,然后将它们返回到活动中。

 private class ListItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView arg0, View arg1, int position, long arg3)
    { 

    Intent intent = new Intent(context, threadactivity.class);
    intent.putExtra("theme", id);
    intent.putExtra("thread", pos);
    startActivity(intent);
    }
}

然后在活动的onCreate中你会做这样的事情

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...


    theme = (int) getIntent().getExtras().get("theme");
    thread = (int) getIntent().getExtras().get("thread");


    }

答案 2 :(得分:0)

这不是将数据传递给活动的正确方法。使用Intent传递数据。 读这个: http://startandroid.ru/en/lessons/complete-list/241-lesson-28-extras-passing-data-using-intent.html

答案 3 :(得分:0)

请使用如下

((YourActivity)getActivity()).yourMethod();

yourMethod()在Activity中声明。