【问题标题】:Data FROM fragment TO activity从片段到活动的数据
【发布时间】:2015-05-18 05:02:55
【问题描述】:

我正在尝试使用 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”的值为 0。我做错了什么?

【问题讨论】:

  • 请看看这个fragments/communicating
  • 使用接口将消息从片段发送到活动。当您要处理多屏时这是一件好事
  • 从不自己创建Activities的实例。

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


【解决方案1】:

您创建的活动与您开始的意图不同。您应该将参数传递到 Intent 中,然后将它们返回到 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);
    }
}

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

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


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


    }

【讨论】:

  • 天哪,就这么简单。我尝试了附加功能,但我不知道如何从活动中调用它们。非常感谢!
  • 没问题,乐于助人
【解决方案2】:

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

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

然后您使用getIntent().getIntExtra(VARNAME, defaultValue) 获取下一个活动中的值;

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      请像下面这样使用

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

      yourMethod() 在 Activity 中声明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多