我是Java的新手。我正在做一个学校项目,我有我的主要活动,然后我有一个设置活动。我试图通过设置活动修改主活动中的xml。我可以使用settings.java修改设置xml文件,但我想用settings.java修改主要活动xml
public class Settings extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// Get the Intent that started this activity and extract the string
Switch switchButton;
final RelativeLayout mRelativeLayout = (RelativeLayout) findViewById(R.id.activity_settings);
final RelativeLayout mRelativeLayoutMain = (RelativeLayout) findViewById(R.id.activity_main);
switchButton = (Switch) findViewById(R.id.switch1);
switchButton.setChecked(true);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean bChecked) {
if (bChecked) {
mRelativeLayoutMain.setBackgroundColor(Color.GRAY);
mRelativeLayout.setBackgroundColor(Color.GRAY);
} else {
mRelativeLayoutMain.setBackgroundColor(Color.WHITE);
mRelativeLayout.setBackgroundColor(Color.WHITE);
}
}
});
if (switchButton.isChecked()) {
mRelativeLayoutMain.setBackgroundColor(Color.GRAY);
mRelativeLayout.setBackgroundColor(Color.GRAY);
} else {
mRelativeLayoutMain.setBackgroundColor(Color.WHITE);
mRelativeLayout.setBackgroundColor(Color.WHITE);
}}
public void toast1(View view) {
android.widget.Toast.makeText(this, "Created by Cody Walls and Tommy Serfas", android.widget.Toast.LENGTH_LONG).show();
}
/*public void switch1(View view) {
ScrollView mScrollView = (ScrollView) findViewById(R.id.scrollView);
mScrollView.setBackgroundColor(Color.GRAY);
}*/
}
在Code中我试图改变主要活动xml的背景:
mRelativeLayoutMain.setBackgroundColor(Color.GRAY);
当我运行应用程序并单击意图时,它将崩溃并显示错误:
" java.lang.NullPointerException:尝试调用虚方法 ' void
android.widget.RelativeLayout.setBackgroundColor(int)
'在null 对象参考"
答案 0 :(得分:1)
我认为最简单的方法是创建 PreferenceManager.SharedPreferences ,我建议您存储当前的应用数据。这将帮助您在退出应用程序后不会丢失应用程序中的任何更改。这是简短的说明:
我希望你理解这个想法。
Link to the Android developer tutorial about App key values storing & saving
Link to the StackOverflow much easier explanation & examples
答案 1 :(得分:0)
有两种方法可以做到这一点(其中一些方法取决于你如何在每个活动中来回切换)。这还取决于你正在改变什么。
在您的设置页面中,当您更改不同的设置时,您将在Preferences
内保存此内容。 (您可以在此处查看更多如何使用“偏好设置”:https://examples.javacodegeeks.com/android/core/ui/settings/android-settings-example/或仅使用Google搜索)。
关于你的主要活动,取决于你回到它的方式(最有可能是onStart),你可以以编程方式设置你需要的东西。
因此,您可能需要对Android生命周期以及每个周期的工作方式(https://developer.android.com/guide/components/activities/activity-lifecycle.html)进行一些研究,如何通过Java(http://startandroid.ru/en/lessons/220-lesson-16-creating-layout-programmatically-layoutparams.html)以编程方式对UI进行编程,以及{{ 1}} Android库保存某些设置。
xml并不意味着“改变”。您可以以编程方式更改UI。可以在没有任何xml的情况下构建Android应用程序。首次构建Android时,它没有使用xml来创建UI。这一切都是通过Java完成的。然后添加它以使用xml来创建活动或片段或任何UI组件。这使得动态内容非常少的静态活动或活动变得更容易。