如何在另一个方法中设置setContentView?

时间:2016-07-13 20:00:49

标签: java android xml methods setcontentview

我有一个带有

的activity_main.xml
tools:context="com.example.android.newwine.MainActivity"

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="goToNext"/>

在我的MainActivity.java文件中,我有

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

public void gaNaarNext(View view){
    setContentView(R.layout.activity_main2);
}

我有一个带

的activity_main2.xml文件
tools:context="com.example.android.newwine.MainActivity"

当我接下来触摸按钮时,activity_main2.xml将被用作ContentView,所以这是正确的,但是当我做任何事情时(比如触摸RadioButton或者做什么都不重要)我的activity_main2.xml文件调用一个方法,它说:&#34;新葡萄酒被停止。&#34;无论我做什么调用方法,应用程序崩溃。我尝试了很多,如果我要粘贴我在这里尝试的所有内容,这将是一个很长的问题:)。

但有人有答案吗?我真的不知道现在该做什么,所以我想;让我们在Stackoverflow上问一些问题。谢谢!

3 个答案:

答案 0 :(得分:1)

您可能更喜欢使用其他活动或fragments更改您的用户界面,因为所涉及的所有绘图都不建议多次使用setContentView()方法。

由于您似乎不想切换活动,因此片段可能是最容易使用的。

This stackoverflow question也解决了这个问题。

答案 1 :(得分:0)

更改内容视图后,屏幕上的UI元素已更改。您之前设置的所有变量现在都指向旧屏幕 - 不再存在。更改内容视图后,必须将这些变量设置为该布局文件中的正确元素。另外,你可能想看看Carlos Sifuentes所说的碎片。

答案 2 :(得分:0)

  

当我在我的RadioButton文件中执行任何操作时(例如触摸activity_main2.xml或无所事事)调用方法时,它会说:&#34; {{1 }}&#34;无论我做什么都称为方法,New Wine is stopped.

问题是您使用了app crashes但是您确实获得了activity_main2.xml reference RadioButton的{​​{1}}。在使用activity_main2.xml设置新布局后,您应该获得所有视图reference,然后根据您的需要使用。

更新您的setContentView()方法,如下所示:

gaNaarNext()

希望这会有所帮助〜