我知道我们无法从另一个Activity中的Activity调用方法.我正试图找出解决这个问题的最佳方法.
这是我的代码.这是我试图调用的方法.这是我的ScoreCard
活动.
public void numPlayerSetup(){
{
int[] ids = {
R.id.TextView11, R.id.TextView12, R.id.TextView13
};
for(int i : ids) {
TextView tv = (TextView)findViewById(i);
tv.setVisibility(View.INVISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我试图调用该方法的方法.score
是ScoreCard
班级的一个对象.
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
int item = spinner.getSelectedItemPosition();
if(item==1){
Log.i("error","This Sucks");
score.numPlayerSetup();
}
}
Run Code Online (Sandbox Code Playgroud)
我试图将该numPlayerSetup
方法放在一个不扩展的不同类中Activity
,只包含逻辑,但我不能在findViewById()
不扩展活动的情况下使用该方法.
这就是我的称呼方式.
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
int item = spinner.getSelectedItemPosition();
ArrayList<TextView> myTextViewList = new ArrayList<TextView>();
TextView tv1 = (TextView)findViewById(R.id.TextView14);
myTextViewList.add(tv1);
if(item==1){
Log.i("error","This Sucks");
Setup.numPlayerSetup(myTextViewList);
}
Run Code Online (Sandbox Code Playgroud)
那就是我打电话的课程.
public class Setup {
TextView tv;
public static void numPlayerSetup(ArrayList<TextView> tvs){
for(TextView tv : tvs) {
Log.i("crash","This Sucks");
tv.setVisibility(View.INVISIBLE); //this line is highlighted in the debugger as the line my error is coming from
}
}
}
Run Code Online (Sandbox Code Playgroud)
它将消息记录在logcat中并给我一个空指针异常.调试器说tv的值为null.这是为什么我得到一个空指针异常?
您可以创建一个Utitlity类(而不是Activity)并传入您想要更改的Textviews.并在需要时调用该方法.
public class Setup {
public static void numPlayerSetup(ArrayList<TextView> tvs){
for(TextView tv : tvs) {
tv.setVisibility(View.INVISIBLE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像(在Activity中)一样使用它:
ArrayList<TextView> myTextViewList = new ArrayList<TextView>();
TextView tv1 = (TextView)findViewById(R.id.tv1);
myTextViewList.add(tv1);
Setup.numPlayerSetup(myTextViewList);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12513 次 |
最近记录: |