1

我有一个无法解决的问题,我对 android 还很陌生,我正在努力使用按钮来更改布局视图的基本概念。我的活动主要是这样

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/bg"
android:orientation="vertical"
tools:context=".MainActivity" >

<DigitalClock
    android:id="@+id/DigitalClock"
    android:layout_width="fill_parent"
    android:layout_height="100dp"

    android:textColor="#ffffff"
    android:gravity="center"
    android:textSize="70sp" />


<View 
    android:layout_width="fill_parent"
    android:layout_height="3dp"
    android:background="@color/line"
    />

 <Button
 android:id="@+id/AddAlarm"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="@string/add_button"
  />


   <Button
 android:id="@+id/AddAlarm2"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="@string/add_button"
 />

我可以让 AddAlarm 按钮打开 add_alarm 布局。但是当我打开 add_alarm 时,该视图上有一个按钮,我需要打开 add_alarm2,但它不起作用这是我的 MainActivity.java :

package com.example.emma;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu; 
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button; 
import android.widget.DigitalClock;

public class MainActivity extends Activity {

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

    DigitalClock dc = (DigitalClock) findViewById(R.id.DigitalClock);



       final Button button = (Button) findViewById(R.id.AddAlarm);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.add_alarm);

            }
        });



         final Button button1 = (Button) findViewById(R.id.AddAlarm2);
            button1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    setContentView(R.layout.add_alarm2); 

                }
            });

 }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

我有点理解如何使用按钮单击来更改视图,但我显然做错了。这是我的 add_alarm2 布局代码。但是当你点击 imagebutton android:id="@+id/AddAlarm2" 它什么也不做而不是打开视图 add_alarm2.xml 任何帮助将不胜感激

这是我的 add_alarm2.xml 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/bg" 
tools:context=".MainActivity" >

<ImageButton
    android:id="@+id/AddAlarm2"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@null"
    android:src="@drawable/normal"
    android:scaleType="fitCenter"
   />

<View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="@color/line"
    />


</LinearLayout>
4

1 回答 1

0

一种快速而肮脏的方法是将要显示的视图放在 activity_main.xml 中,带有visibility=GONE。使用view.setVisibility(View.VISIBLE)

然后,当您单击按钮时,您将此元素的可见性切换为可见。setContentView 应该只在 onCreate() 中使用一次,多次调用它可能会产生意想不到的结果。

更好的方法是探索其他替代方案,如ViewSwitcher,它将使代码更清晰。

于 2013-11-03T22:58:36.730 回答