Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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_Sharedpreferences - Fatal编程技术网

在Java中向函数传递值

在Java中向函数传递值,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在使用android studio为工作构建一个android应用程序。我有一个证人列表存储为SharedReference,当点击修改这些证人的用户被拆分并列出时,用户可以点击他们想要修改的证人,这就是计划,我似乎无法传递证人列表编号(基本上是循环中使用的编号)将证人信息加载到要修改的表单中的另一个函数。下面是我的代码: String s= WitnessDetails; String[] array = s.split("$_$(?=[0-

我正在使用android studio为工作构建一个android应用程序。我有一个证人列表存储为SharedReference,当点击修改这些证人的用户被拆分并列出时,用户可以点击他们想要修改的证人,这就是计划,我似乎无法传递证人列表编号(基本上是循环中使用的编号)将证人信息加载到要修改的表单中的另一个函数。下面是我的代码:

            String s= WitnessDetails;
            String[] array = s.split("$_$(?=[0-9])");   

            LinearLayout parentLayout = (LinearLayout)findViewById(R.id.LinearLayout);
            // Layout inflater
            LayoutInflater layoutInflater = getLayoutInflater();
            View view;

        for(String str : array)
        {
            countWitness++;
            String WitnessName= str;

            view = layoutInflater.inflate(R.layout.witnesses_activity, parentLayout, false);

            // In order to get the view we have to use the new view with text_layout in it
            TextView textView = (TextView)view.findViewById(R.id.Witnesses_details);
            textView.setText("Witness 1: " + countWitness + "\n" + WitnessName+"\n Edit");

            // Add the text view to the parent layout
            parentLayout.addView(textView);

            textView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View arg0) {                      
                    Amendwitness(countWitness);
                }
            });

          }

          public void Amendwitness(witnessNum){

          }

您正在
countWitness
内部匿名类中使用

countWitness
应为
final

countWitness
应为类字段

否则编译器将显示错误。由于在for循环中,
countWitness
是递增的,因此不能将其声明为
final
,因此剩下的唯一解决方案是将其作为类字段


您可以使用
功能

    for(String str : array)
    {
        countWitness++;
        String WitnessName= str;

        view = layoutInflater.inflate(R.layout.witnesses_activity, parentLayout, false);

        TextView textView = (TextView)view.findViewById(R.id.Witnesses_details);
        textView.setText("Witness 1: " + countWitness + "\n" + WitnessName+"\n Edit");
        textView.setTag(countWitness); // set the countWitness as tag object

        parentLayout.addView(textView);

        textView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {                      
                Amendwitness((Integer)arg0.getTag());
            }
        });

      }

这里有两种可能性:

  • 添加自定义的
    MyClickListener
    类:

    public class MyClickListener implements View.OnClickListener {
        private int mIndex;
    
        public MyClickListener(int index) {
            mIndex = index;
        }
    
        @Override 
        public void onClick(View v) {
            Amendwitness(index);
        }
    }
    
    将您的
    OnClickListeners
    添加如下:

    textView.setOnClickListener(new MyClickListener(countWitness));
    
  • 使用视图的标记:

    textView.setTag(countWitness);
    textView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {                      
            Amendwitness(v.getTag());
        }
    });
    

  • 抱歉,忘了提及我收到的错误是因为我在调用AmendWitness时放入了countWitness变量,错误是witness_活动中的AmendWitness()不能仅用于(int)编码约定:不要让变量或方法名称以大写字母开头!这对其他人和SO格式化程序来说都非常混乱;)匿名View.OnClickListener不能有构造函数,因此无法存储索引值。您好,谢谢您的回复。但是,我仍然得到错误AmendWitness(),在见证_活动中无法应用于(java.lang.integer)。编辑器已将此提取突出显示为导致错误((Integer)arg0.getTag());AmendWitness()的签名是什么?它目前是一个空函数,但将用于用证人信息重新填充表单以进行修改。签名意味着。。它的参数类型是什么?返回类型?你可以通过编辑你的问题来放置函数吗?谢谢sanbhat,我的代码已经编辑成包含函数,就像以前一样,它现在是空的,因为我没有把这个函数添加到当前的问题中。