Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个数组从strings.xml添加到另一个ArrayList_Java_Android_Arrays_List - Fatal编程技术网

Java 将一个数组从strings.xml添加到另一个ArrayList

Java 将一个数组从strings.xml添加到另一个ArrayList,java,android,arrays,list,Java,Android,Arrays,List,我正在尝试创建一个基于单选按钮调查的数组。我为strings.xml中的每个单选按钮提供了数组。选择单选按钮后,应提取一个数组并将其放入哈希集中以过滤掉重复项,然后放入一个新数组,以便在单击提交按钮后以片段形式显示。以下是活动的主要部分: //SUBMIT BUTTON Button submit = (Button) findViewById(R.id.submitBtn); final Fragment fragment = new ListFragment();

我正在尝试创建一个基于单选按钮调查的数组。我为strings.xml中的每个单选按钮提供了数组。选择单选按钮后,应提取一个数组并将其放入哈希集中以过滤掉重复项,然后放入一个新数组,以便在单击提交按钮后以片段形式显示。以下是活动的主要部分:

    //SUBMIT BUTTON
    Button submit = (Button) findViewById(R.id.submitBtn);
    final Fragment fragment = new ListFragment();
    final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    //On Submit Click show Instrument Fragment
    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            final ArrayList filtered_list = new ArrayList<>();
            // Radio Button Selection
            if (firstrBtn.isChecked()){
                filtered_list.add(getResources().getStringArray(R.array.firstarray));

            } else if (secondrBtn.isChecked()){
                filtered_list.add(getResources().getStringArray(R.array.secondarray));
            } 

            //Convert filtered_list to final_filtered_list and eliminate duplicates
            final HashSet<String> hashSet = new HashSet<String>();
            hashSet.addAll(filtered_list);
            filtered_list.clear();
            filtered_list.addAll(hashSet);
            ArrayList<String> final_filtered_list = new ArrayList<String>(hashSet);

            //Send Final ArrayList
            Bundle bundle = new Bundle();
            bundle.putStringArrayList("RESULT_LIST", final_filtered_list);
            listFragment.setArguments(bundle);

            //Transaction to Fragment
            transaction.replace(R.id.collect_container, listFragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    });
上面的代码指向一个列表适配器活动,其中收集每个项目的位置,并在列表中的项目旁边添加一张图片


看来我把数据类型搞混了。我很抱歉编辑太晚了。我对java编码比较陌生,正在阅读兼容的数据类型

将onclick修改为:

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Bundle bundle = new Bundle();
        bundle.putStringArrayList("RESULT_LIST", Arrays.asList(getResultList()));
        listFragment.setArguments(bundle);

        //Transaction to Fragment
        transaction.replace(R.id.collect_container, listFragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }
});
添加帮助器方法以从资源文件中获取适当的列表:

private String[] getResultList() {
    if (firstrBtn.isChecked()) {
        getResources().getStringArray(R.array.firstarray));
    }
    return getResources().getStringArray(R.array.secondarray));
}
你做错了什么:

  • filtered_list.add(getResources().getStringArray(R.array.firstarray))将字符串数组(非字符串)作为一项添加到列表中
  • 当您可以直接从字符串[](从字符串资源)转换到ArrayList时,不需要从HashSet转换到ArrayList

  • 将onclick修改为:

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Bundle bundle = new Bundle();
            bundle.putStringArrayList("RESULT_LIST", Arrays.asList(getResultList()));
            listFragment.setArguments(bundle);
    
            //Transaction to Fragment
            transaction.replace(R.id.collect_container, listFragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    });
    
    添加帮助器方法以从资源文件中获取适当的列表:

    private String[] getResultList() {
        if (firstrBtn.isChecked()) {
            getResources().getStringArray(R.array.firstarray));
        }
        return getResources().getStringArray(R.array.secondarray));
    }
    
    你做错了什么:

  • filtered_list.add(getResources().getStringArray(R.array.firstarray))将字符串数组(非字符串)作为一项添加到列表中
  • 当您可以直接从字符串[](从字符串资源)转换到ArrayList时,不需要从HashSet转换到ArrayList

  • “我的模拟器不断崩溃,我不知道出了什么问题……”
    。请1)在Android Studio调试器中运行,2)清除LogCat,3)重现问题,然后4)使用堆栈跟踪更新帖子!请显示logcat,以及您选中的按钮,
    firstrBtn
    secondrBtn
    “我的模拟器一直崩溃,我不知道出了什么问题……”
    。请1)在Android Studio调试器中运行,2)清除LogCat,3)重现问题,然后4)使用堆栈跟踪更新帖子!请显示日志,以及您选中的按钮,
    firstrBtn
    secondrBtn
    我不知道您为什么被否决-您的建议完全合理。然而,OP应该用他的logcat堆栈更新他的帖子。没有痕迹,我们只是猜测。。。看起来OP问了他的问题,然后马上逃离了现场……谢谢你的回答。通过您的回复,我可以确定我使用的是不兼容的数据类型。我做了以下操作来解决此问题:1。将string.xml更改为字符串数组数据类型。2.正如您所建议的,创建了一个助手方法。3.修改了if-then语句:从“filtered_list.add(getResources().getStringArray(R.array.firstarray));”到“filtered_list.addAll(Arrays.asList(getResources().getStringArray(R.array.firstarray));”最后,我去掉了代码中的哈希集部分。事实证明,我需要的是保留只在每个广播组中常见的结果。在发布另一个帖子之前,我将尝试解决这个问题。再次感谢你。我不知道你为什么被否决——你的建议完全合理。然而,OP应该用他的logcat堆栈更新他的帖子。没有痕迹,我们只是猜测。。。看起来OP问了他的问题,然后马上逃离了现场……谢谢你的回答。通过您的回复,我可以确定我使用的是不兼容的数据类型。我做了以下操作来解决此问题:1。将string.xml更改为字符串数组数据类型。2.正如您所建议的,创建了一个助手方法。3.修改了if-then语句:从“filtered_list.add(getResources().getStringArray(R.array.firstarray));”到“filtered_list.addAll(Arrays.asList(getResources().getStringArray(R.array.firstarray));”最后,我去掉了代码中的哈希集部分。事实证明,我需要的是保留只在每个广播组中常见的结果。在发布另一个帖子之前,我将尝试解决这个问题。再次感谢你。