android - 从一个 Activity 中调用另一个 Activity 中的方法

标签 android android-activity

我知道我们不能从另一个 Activity 中的 Activity 调用方法。我正在尝试找出解决此问题的最佳方法。

这是我的代码。这是我要调用的方法。它在我的 ScoreCard Activity 中。

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);
    }

}

下面是我尝试调用该方法的方式。 scoreScoreCard 类的一个对象。

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 () 不扩展 Activity 的方法。

我就是这样调用它的。

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 的值为空。这就是我收到空指针异常的原因吗?

最佳答案

您可以创建一个 Utitlity 类(不是 Activity)并传入您希望更改的 Textview。并在需要时调用该方法。

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 - 从一个 Activity 中调用另一个 Activity 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294473/

相关文章:

android - 在 jpg 图像 android 上绘制文本

android - TextInputEditText调整文本大小

android - 带有复选框的 ListView 有问题

java - Activity 生命周期问题(如何检测 Activity 是否处于前台)

android - 如何将参数从多个 Activity 传递到一个 Activity

java - android studio setcontentview 与 oncreate

android - Android MediaPlayer无法播放声音

android - 如何勾勒出矢量可绘制对象的轮廓?

android - 你有没有在你的 androidmanifest.xml android 中声明这个 Activity

android - 如何避免旋转时重新创建 Activity,同时尊重方向锁定?