我可以使用LayoutInflater.inflate()打开一个新屏幕

时间:2011-05-21 08:55:39

标签: android android-layout screen

我对android比较新,我需要在点击按钮时打开一个新屏幕。 当我在这里检查帖子时,他们建议使用setContentView()或使用Intent。 在案例2中,一个新的屏幕被打开作为一个新的活动,因为我不希望这发生 你可以告诉我是否可以使用LayoutInflater来打开一个新的屏幕,如果是这样的话怎么做。

1 个答案:

答案 0 :(得分:1)

你的问题表明,没有必要使用LayoutInflater。检查此代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.basic_layout_1);
    Button button = (Button) findViewById(R.id.basic_layout_1_button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            setContentView(R.layout.basic_layout_2);
        }
    });
}

我认为这就是你需要的一切。但是为了防止我发布XML文件:

basic_layout_1.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello world! - Basic layout 1"
    android:textSize="32dip">
</TextView>
<Button
    android:id="@+id/basic_layout_1_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Basic layout 1 Button">
</Button>
</LinearLayout>

和basic_layout_2.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello world! - Basic layout 2"
    android:textSize="32dip">
</TextView>
</LinearLayout>

// 修改 重要的是,这种创建新屏幕的方法将导致后退按钮不会显示basic_layout_1但它会退出您的应用程序(在上面的示例中)。如果您想要显示上一个屏幕,您应该覆盖后退按钮操作(但在这种情况下,为什么不使用Intent?)