【问题标题】:How to send the array data from one activity to fragment in android?如何将数组数据从一个活动发送到android中的片段?
【发布时间】:2017-03-24 19:51:58
【问题描述】:

我正在构建一个 android 应用程序,用户可以在其中选择他们最喜欢的东西。

当用户点击物品的图片时,物品的名称被添加到一个数组中。

现在我想知道如何将该数组的值解析为任何片段并将其显示在我的微调器列表中。

例如:用户通过单击相应的图像来选择移动设备和平板电脑,然后将这些值添加到数组名称“stuffarray”中,现在我想通过“提交”按钮将此数组传递给我的片段,当我单击我的片段的微调器应该在列表中有移动和平板电脑的价值。

这是我的材料选择代码:

submite = (ImageButton) findViewById(R.id.nextscreen);      
next.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        Intent innext = new Intent(getApplicationContext(), MainActivitytabnew.class);

        startActivity(innext);              

});
img1 = (ImageButton) findViewById(R.id.imageButton1);


img1.setBackgroundResource(R.drawable.mobile);   
img1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

         isClicked1=!isClicked1;
            if (isClicked1) {
                img1.setImageResource(R.drawable.mobile);
                start();
                stuff1 = "mobile";

                   myList.add(stuff1);



            }else {
                img1.setImageResource(R.drawable.mobile);
                myList.remove(sport1);
                //sport1 = "";  
                txt1.setText("");
            }
    }
});

img2 = (ImageButton) findViewById(R.id.imageButton2);
img2.setBackgroundResource(R.drawable.tablet);
img2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        isClicked2=!isClicked2;
        if (isClicked2) {
            img2.setImageResource(R.drawable.tablet);
            start();
            stuff2 = "tablet";
           myList.add(stuff2);
        }else {
            img2.setImageResource(R.drawable.tablet);
           // sport2 = "";
            myList.remove(sport2);
        }
    }
});

【问题讨论】:

  • 你也可以通过activity调用fragment的方法,或者activity-fragment。
  • @KrunalIndrodiya 我该怎么做?
  • @HiteshMatnani 请检查我给出的答案。如果这里提到任何问题。
  • @KrunalIndrodiya 我提到了一个错误,请从它开始......谢谢

标签: android arrays android-fragments


【解决方案1】:

你必须在这里使用Fragment arguments

从 Activity 或您实例化片段或进行交易的位置:

 private void putList(List<String> list) {
        Bundle bundle = new Bundle();
        bundle.putStringArrayList("myList", new ArrayList<>(list));

        Fragment fragment = new MyFragment();
        fragment.setArguments(bundle);
    }

在每个片段内部:

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

    List<String> list = getArguments().getStringArrayList("myList");
}

【讨论】:

  • 不幸的是,我的应用程序在执行 List list = getArguments().getStringArrayList("myList"); 时停止了错误;
  • @HiteshMatnani,然后发布您的错误。代码很好。
  • 运行应用程序时不幸停止了
  • 我这样编码 -next.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {{ Intent innext = new Intent(getApplicationContext(), MainActivitytabnew.class); Bundle bundle = new Bundle();bundle.putStringArrayList("my", myList); FragmentPlayo fragment = new FragmentPlayo(); fragment.setArguments(bundle); startActivity(innext);}});
  • @HiteshMatnani,因为你做错了。问题是询问如何将数据从 Activity 传递到 Fragment。但是你开始另一个活动。附上更多来源。
【解决方案2】:

使用

intent.putCharSequenceArrayListExtra(tag, arraylist);

getIntent().getExtras().getCharSequenceArrayList(tag);

【讨论】:

  • 坦克!!我正在使用您的答案,但在 putCharSequenceArrayListExtra 中显示错误 - Intent 类型中的 putCharSequenceArrayListExtra(String, ArrayList) 方法不适用于参数 (String, ArrayList)
  • 对不起使用 putStringArrayListExtra(tag,array);而是
  • 运行应用程序时不幸停止
【解决方案3】:

你可以这样做,

在片段中。分片访问Activity方法。

ActivityName activityName=(ActivityName)getActivity();
if(activityName!=null){
    activityName.MethodOfActivityName();
}

在activity中,通过Activity访问Fragment方法。

fragmentObject.MethodName();

【讨论】:

  • 对不起您的代码我无法理解在您解析数组列表值的ans代码中
  • @HiteshMatnani,嗨,你必须在方法中解析 arrayList。平均 MethodOfActivityName(arrayList) 是方法名称。
  • 我的数组列表名称是 myArray。我的活动名称是 MainActivity 和片段名称是 fragmentA 我想要数据的地方你现在可以告诉我要根据你的方法放置什么
  • @HiteshMatnani 很抱歉给您带来不便。 MainActivity 活动名称=(MainActivity)getActivity(); if(activityName!=null){ activityName.MethodOfActivityName(myArray); }
  • 以及如何获取价值??
【解决方案4】:

在我的例子中,我只是使用意图将字符串数组从活动共享到片段。这对我有用。

活动中

 Intent send=new Intent(getApplicationContext(),FragmentActivity.class);
                send.putExtra("array",TouristPlaces);

在Fragment下的onCreateView..

Intent in=getActivity().getIntent();
    String [] ReceivedTouristPlaces=in.getStringArrayExtra("array");

注意:在我的活动中,我使用列表视图来满足我的要求,点击它会将数据发送到具有选项卡的片段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2012-09-26
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    相关资源
    最近更新 更多