Android 从片段到活动的数据

Android 从片段到活动的数据,android,android-intent,android-fragments,android-activity,start-activity,Android,Android Intent,Android Fragments,Android Activity,Start Activity,我正在尝试使用活动中的方法将数据从片段传递到活动: public void setID(int i,int j) { theme = i; thread = j; } 然后,从片段中,我使用意图创建活动并传递数据: private class ListItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView a

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

public void setID(int i,int j) {
    theme = i;
    thread = j;
}
然后,从片段中,我使用意图创建活动并传递数据:

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。我做错了什么?

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)
在下一个活动中获取值

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)
在下一个活动中获取值

您创建的活动与您开始时的意图不同。您应该将参数传递到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");


    }

您创建的活动与您开始时的意图不同。您应该将参数传递到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");


    }

这不是向活动传递数据的正确方法。使用
Intent
传递数据。 请阅读以下内容:
这不是向活动传递数据的正确方法。使用
Intent
传递数据。 请阅读以下内容:

请像下面这样使用

((YourActivity)getActivity()).yourMethod();
yourMethod()已在“活动”中声明。

请按如下方式使用

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

你的方法()是在活动中声明的。

请查看此使用界面,以便将消息从片段发送到活动。这在处理多屏幕时是一件好事。切勿自己创建
活动的实例。
请查看此使用界面,以便将消息从片段发送到活动。这在您准备处理多屏幕从不自己创建
活动的实例。哦,天哪,这么简单。我试着和临时演员联系,但我不知道如何在活动中给他们打电话。非常感谢你!没问题,很乐意帮忙哦,天哪,很简单。我试着和临时演员联系,但我不知道如何在活动中给他们打电话。非常感谢你!没问题,很乐意帮忙