Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ToggleButton阻止我的应用程序启动_Java_Macos_Android Studio_Crash_Togglebutton - Fatal编程技术网

Java ToggleButton阻止我的应用程序启动

Java ToggleButton阻止我的应用程序启动,java,macos,android-studio,crash,togglebutton,Java,Macos,Android Studio,Crash,Togglebutton,我正在为一个小游戏制作一个计算器,在我添加一个切换按钮之前,一切都很好。应用程序在启动时崩溃,但我找不到任何错误 JAVA代码: . . . int colorOff = getResources().getColor(R.color.toggleOff); int colorOn = getResources().getColor(R.color.toggleOn); @Override protected void onCreate(Bundle s

我正在为一个小游戏制作一个计算器,在我添加一个切换按钮之前,一切都很好。应用程序在启动时崩溃,但我找不到任何错误

JAVA代码:

.
.
.    
    int colorOff = getResources().getColor(R.color.toggleOff);
    int colorOn = getResources().getColor(R.color.toggleOn);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_balot_calculator); }

//This method is supposed to change the color of the toggle button when it is checked and not checked.
    public void seraA(View view) {
        ToggleButton seraToggle = (ToggleButton) findViewById(R.id.sera_toggle);
            if (seraToggle.isChecked()) {
                seraToggle.setBackgroundColor(colorOn); }
            else
                seraToggle.setBackgroundColor(colorOff);
    }
.
.
.
XML代码:

.
.
.
<ToggleButton
    android:id="@+id/sera_toggle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginHorizontal="8dp"
    android:layout_marginVertical="4dp"
    android:onClick="seraA"
    android:textOn="@string/sera_T"
    android:textOff="@string/sera_T"
    android:textColor="#E0F7FA"
    android:textSize="20sp" />
.
.
.
。
.
.
.
.
.

好的,下面一行给出了它:

原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.content.res.Resources android.content.Context.getResources()”

我假设在进行getResources()调用时您的类没有初始化

请尝试以下方法:

int colorOff;
int colorOn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mini_game); 
    colorOff = getResources().getColor(R.color.toggleOff);
    colorOn = getResources().getColor(R.color.toggleOn);
}

让我知道它是否有效

我通过删除变量
colorOn
colorOff
解决了这个问题。它看起来几乎一样,但它是这样工作的

    //int colorOff = getResources().getColor(R.color.toggleOff);
    //int colorOn = getResources().getColor(R.color.toggleOn);

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mini_game);
        }

//This method is supposed to change the color of the toggle button when it is checked and not checked.

    public void seraA(View view) {
        ToggleButton seraToggle = (ToggleButton) findViewById(R.id.sera_toggle);
        if (seraToggle.isChecked()) {
            seraToggle.setBackgroundColor(getResources().getColor(R.color.toggleOn));
        } else
            seraToggle.setBackgroundColor(getResources().getColor(R.color.toggleOff));
    }

错误消息是什么?java.lang.RuntimeException:无法实例化活动组件信息{com.example.android.detailedbalotcalculator/com.example.android.detailedbalotcalculator.BalotCalculator}:java.lang.NullPointerException:尝试调用虚拟方法'android.content.res.Resources android.Context.getResources()'在空对象引用上是否有直接引用代码的引用?这样的话,几乎不可能帮到你。很抱歉,我刚刚开始编码,什么能向你澄清我的问题?引用代码时没有直接错误,我不允许在问题中粘贴logcat,因为它更多的是代码而不是文字。您可以使用github中的Gist,然后将链接放在这里:或者不使用帐户,不幸的是,它不起作用。应用程序在启动时不断崩溃,logcat显示相同的错误。请尝试使用getResources对这些部分进行注释,看看是否有效。这样我们就可以确定,错误是由此引起的,然后可以进一步调查。我只是做了更多的研究,很明显,您现在调用int colorOff=ContextCompat.getColor(getApplicationContext(),R.color.my\u view\u color);