我知道我们无法从另一个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); }}
这是我试图调用该方法的方法.得分是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(); }}
我试图将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); }
那就是我打电话的课程.
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 } }}
它将消息记录在logcat中并给我一个空指针异常.调试器说tv的值为null.这是为什么我得到一个空指针异常?
解决方法:
您可以创建一个Utitlity类(而不是Activity)并传入您想要更改的TextvIEws.并在需要时调用该方法.
public class Setup {public static voID numPlayerSetup(ArrayList<TextVIEw> tvs){ for(TextVIEw tv : tvs) { tv.setVisibility(VIEw.INVISIBLE); } }}
然后你可以像(在Activity中)一样使用它:
ArrayList<TextVIEw> myTextVIEwList = new ArrayList<TextVIEw>();TextVIEw tv1 = (TextVIEw)findVIEwByID(R.ID.tv1);myTextVIEwList.add(tv1); Setup.numPlayerSetup(myTextVIEwList);
总结 以上是内存溢出为你收集整理的android – 从活动中调用另一个活动中的方法全部内容,希望文章能够帮你解决android – 从活动中调用另一个活动中的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)