数据从片段到 activity

Data FROM fragment TO activity

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

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

然后,从片段中我使用 Intent 创建 activity 并通过以下方式传递数据:

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);
    }
}

但是,当 activity 启动时 "i" 和 "j" 的值是 0。我做错了什么?

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

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

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

获得下一个 activity 中的值

您创建的activity和您开始的意图不同。您应该将参数传递到意图中,然后将它们返回到 activity.

 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);
    }
}

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

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


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


    }

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

请像下面这样使用

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

yourMethod() 在 Activity 中声明。