数据从片段到 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 中声明。
我正在尝试使用 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.
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 中声明。