有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在从其他活动单击按钮时强制执行

我想使用toDo()工作应用程序。从其他示例单击按钮时初始化(AllActivity)。班(活动)

public class Otherclass extend AppCompatActivity{

    Button example = (Button)findViewById(R.id.option_language);
            example.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    example.isChecked();
                }
            });
}

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ToDo();
    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toDo();
    }

    public void toDo() {
        if(new OtherClass().example.isChecked()) {
           // To do something.
            }
        }
    }
}

我想这么做。但是,我有java。lang.NullPointerException:。空对象引用上的isChecked()


共 (3) 个答案

  1. # 1 楼答案

    这是你实施的不良行为

    如果要检查是否单击了示例按钮。只需在App类中设置一个布尔标志,然后单击按钮设置其值

    如果您希望将此标志从一个活动传递到另一个活动,只需使用intent即可

    public class Otherclass extend AppCompatActivity{
    
        Button example = (Button)findViewById(R.id.option_language);
                example.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        App.setIsChecked(true);
                    }
                });
    }
    
    public class App extends Application {
        public static boolean isChecked = false;
        @Override
        public void onCreate() {
            super.onCreate();
            ToDo();
        }
    
        public void setIsChecked(boolean isChecked) {
                this.isChecked = isChecked;
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            toDo();
        }
    
        public void toDo() {
            if(isChecked) {
               // To do something.
                }
            }
        }
    }
    
  2. # 2 楼答案

    public class Otherclass extend AppCompatActivity{
    static Boolean checked=false;
    Button example = (Button)findViewById(R.id.option_language);
            example.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    checked=true;
                }
         });
    }
    
    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            ToDo();
        }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toDo();
    }
    
    public void toDo() {
        if(new OtherClass().checked) {
           // To do something.
            }
        }
    }
    
    }
    

    这可能有用吗 在课堂上使用静态编码是很糟糕的做法。相反,用意图在课堂上交流

  3. # 3 楼答案

    你可以像这样点击任何按钮调用App类的todo方法

        ((App)getApplication()).todo();