我尝试使用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"我做错了什么?
答案 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中声明。