Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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 从活动传递到对话框时,我的数组为空_Java_Android_Dialog_Parameter Passing - Fatal编程技术网

Java 从活动传递到对话框时,我的数组为空

Java 从活动传递到对话框时,我的数组为空,java,android,dialog,parameter-passing,Java,Android,Dialog,Parameter Passing,我正在创建一个对话框警报,它将显示一个无线组,根据所选选项,它将用一个或另一个数组的内容填充一个列表。这些数组在主活动上填充,因此它们不为空。我的问题是试图填充对话框中的列表,结果数组是空的,我不知道如何将填充的值传递到那里 以下是导致问题的线路: adapter = new populateListView(MainActivity.this, all_times_array, all_runtimes_array); 这是我的对话框的代码: public void dialog_filte

我正在创建一个对话框警报,它将显示一个无线组,根据所选选项,它将用一个或另一个数组的内容填充一个列表。这些数组在主活动上填充,因此它们不为空。我的问题是试图填充对话框中的列表,结果数组是空的,我不知道如何将填充的值传递到那里

以下是导致问题的线路:

adapter = new populateListView(MainActivity.this, all_times_array, all_runtimes_array);
这是我的对话框的代码:

public void dialog_filter() {

  final String[] grpname = {
   "Today",
   "This Month",
   "This Year",
   "All time"
  };

  AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);

  //alt_bld.setIcon(R.drawable.icon);
  alt_bld.setTitle("See reports from ...");
  alt_bld.setSingleChoiceItems(grpname, -1, new DialogInterface
   .OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
     time_filter = item;
     System.out.println(time_filter);
     Toast.makeText(getApplicationContext(),
      grpname[item] + " selected", Toast.LENGTH_SHORT).show();


     switch (time_filter) {


      case 3:

       adapter = new populateListView(MainActivity.this, all_times_array, all_runtimes_array);
       bannertext = "Total seizures:" + " " + total_seizures;
       banner.setText(bannertext);
       list.setAdapter(adapter);

       break;

      case 0:
       adapter = new populateListView(MainActivity.this, today_times_array, today_runtimes_array);
       bannertext = "Today seizures:" + " " + today_seizures;
       banner.setText(bannertext);
       list.setAdapter(adapter);
       break;

      case 1:
       adapter = new populateListView(MainActivity.this, month_times_array, month_runtimes_array);
       bannertext = "Month seizures:" + " " + month_seizures;
       banner.setText(bannertext);
       list.setAdapter(adapter);
       break;
      case 2:
       adapter = new populateListView(MainActivity.this, year_times_array, year_runtimes_array);
       bannertext = "Year seizures:" + " " + year_seizures;
       banner.setText(bannertext);
       list.setAdapter(adapter);
       break;


     }
     dialog.dismiss();

    }
   });
  AlertDialog alert = alt_bld.create();
  alert.show();
以下是my pupulateListView类的方法:

class populateListView extends ArrayAdapter <String>
只是一个建议! 使用您的无线电组创建布局文件,并将此布局设置为警报对话

 dialog.setContentView(R.layout.yourlayout);
在此之后,请参考布局中的Radio组

RadioGroup youradiogroup = (RadioGroup) dialog.findViewById(R.id.youradiogroupID);
并在中获取所选项目的值

youradiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        public void onCheckedChanged(RadioGroup group,
                                     int checkedId) {
            if (checkedId == R.id.first_radiobutton) {
                //do something}
            else  if (checkedId == R.id.second_radiobutton) {
                //do something else }
            }
    });

希望有帮助

我检查了所有类似的问题,似乎没有一个适合我的情况,因为。你确定
all\u times\u array
all\u runtimes\u array
都不是空的吗?在创建适配器之前,您可以打印它们的长度吗?如果您在活动中初始化了这些数组是的,它们是空的,但只有在对话框中,当我在主活动中打印它们时,它们都包含数据。它们被初始化为公共,然后在oncreate期间填充。您不应该在
对话框中填充
列表
,因为对话框的目的是获得用户的选择。相反,您应该捕获用户在
对话框中选择的值,并将其放入
MainActivity
,然后根据选择的值填充
列表。这是一个很好的建议,但这是一个问答网站。请回答这个问题,然后你可以把你的建议也包括在内。最好的办法是将你的建议添加为评论,这样其他人就不会跳过这个问题,因为它已经有了答案。如果你真的想帮助代码审查,那么你可以到这里来:我认为这会有帮助,因为我在我的一个项目中遇到了同样的问题。谢谢你的回复,现在我必须删除答案并将其添加为评论?这通常是最好的方式,但既然你的答案已经在这里,也许可以留下这个,但请记住评论,以备下次使用。谢谢你,我会的!
youradiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        public void onCheckedChanged(RadioGroup group,
                                     int checkedId) {
            if (checkedId == R.id.first_radiobutton) {
                //do something}
            else  if (checkedId == R.id.second_radiobutton) {
                //do something else }
            }
    });