我正在开发一个仅出于娱乐目的的应用程序,而对于Android世界来说,它仍然是非常新的。但是我想在我的应用程序中添加一个功能,将背景颜色更改为黑色或白色,并将文本颜色也更改为黑色或白色。但是问题是当我打开应用程序时,它立即崩溃。这是用于后台更改的MainActivity.java代码:
RelativeLayout MainActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Button theme_White = (Button) findViewById(R.id.WhiteTheme);
Button theme_Black = (Button) findViewById(R.id.Blacktheme);
final RelativeLayout MainActivity = (RelativeLayout)findViewById(R.id.MainActivity);
theme_White.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainActivity.setBackgroundColor(getResources().getColor(R.color.white));
}
});
theme_Black.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainActivity.setBackgroundColor(getResources().getColor(R.color.black));
}
});
setContentView(R.layout.content_main);
theme_White.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView random = (TextView)findViewById(R.id.random);
random.setTextColor(getResources().getColor(R.color.black));
}
});
theme_Black.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView random = (TextView)findViewById(R.id.random);
random.setTextColor(getResources().getColor(R.color.white));
}
});
WhiteTheme是将主题更改为白色背景和黑色文本的按钮,Blacktheme是将主题更改为黑色背景和白色文本的按钮。 MainActivity是我的activity_main.xml文件的ID。
谁能告诉我如何解决此崩溃?
谢谢。
[编辑]
Android Studio现在说这些方法可能会产生'java.lang.NullPointerException'我该如何解决?
最佳答案
我认为您的应用程序崩溃是因为您没有传递上下文。
尝试这个:
final RelativeLayout MainActivity = (RelativeLayout)findViewById(R.id.MainActivity);
theme_White.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainActivity.setBackgroundColor(this.getResources().getColor(R.color.white));
}
});
关于android - 应用程序的背景更改导致我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796610/