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