Java ToggleButton阻止我的应用程序启动
我正在为一个小游戏制作一个计算器,在我添加一个切换按钮之前,一切都很好。应用程序在启动时崩溃,但我找不到任何错误 JAVA代码: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
.
.
.
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);