想制作一个以主布局开头的Android应用,当您按下此布局中的按钮(称为 stateButton )时,布局会变为< em> main2 布局包含另一个按钮(名为 boton2 ),当你按下这个按钮时,你会回到第一个主要按钮。
我想在同一个活动中执行此操作而不创建或启动另一个活动。
在这里,我向您展示部分代码:
public class NuevoshActivity extends Activity
implements SensorEventListener, OnClickListener {
private Button stateButton;
private Button boton2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.stateButton = (Button) this.findViewById(R.id.boton);
this.boton2 = (Button) this.findViewById(R.id.boton2);
stateButton.setOnClickListener(this);
boton2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v==stateButton) {
setContentView(R.layout.main2);
}
else if(v==boton2) {
setContentView(R.layout.main);
}
}
}
电源只有一些图像,文本视图和按钮。
但我有些麻烦。不能只是那么简单,或者我错过了什么或者出了什么问题?
答案 0 :(得分:3)
当您使用findViewById时,您实际上是在尝试在setContentView指定的布局中查找视图。因此,当您尝试检查按钮时,一次又一次地使用setContentView可能会带来问题。
我不会使用setContentView,而是将屏幕的2个布局添加为视图翻转器的子项,一次只显示一个子项。您可以指定要显示的子项的索引。使用视图翻转器的好处是,如果在视图之间切换时需要动画,则可以轻松为视图指定“输入”和“输出”动画。这是一个更清洁的方法,然后一次又一次地调用setContentView。
答案 1 :(得分:2)
FrameLayout
可以很好地处理这个...使用<include...
contstruct加载多个其他布局,然后您可以使用setvisibility(View.VISIBLE);
和{{来切换它们之间来回切换1}}在各个布局上。
例如:
主XML包括另外两种布局:
setVisibility(View.INVISIBLE);
在布局之间切换的代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/frameLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<include android:id="@+id/buildinvoice_step1_layout" layout="@layout/buildinvoice_step1" android:layout_width="fill_parent" android:layout_height="fill_parent"></include>
<include android:id="@+id/buildinvoice_step2_layout" android:layout_width="fill_parent" layout="@layout/buildinvoice_step2" android:layout_height="fill_parent"></include>
</FrameLayout>
您还需要在活动开始时(或以XML格式)设置各个布局的可见性,否则您将看到它们 - 一个在另一个之上。
答案 2 :(得分:0)
您的boton2
按钮将为NULL,因为该按钮的定义位于main2.xml
。
您将能够找到的唯一视图是main.xml
中定义的视图。
答案 3 :(得分:0)
谢谢!所有的信息都很有用,可以理解很多东西,正如C0deAttack评论的那样,我在main2上的按钮上遇到了麻烦。我所做的是将View.VISIBLE和View.GONE设置为每个布局中我想要的TextViews和Buttons。非常感谢你。