Android:从一个布局 Activity 切换到另一个

标签 android xml android-layout android-activity android-studio

我试图显示启动画面 3 秒,然后转到主屏幕,它们都在同一个类中。但是,我的问题是,当我尝试调用新的 layout.activity 时,在我所在的类的原始 layout.acitity 之前,程序崩溃了。为什么?

这是我正在谈论的一个小例子:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);//new activity 
    displaySplash();

    setContentView(R.layout.activity_visualizer);//original activity 

我能让它运行的唯一方法是完全注释掉启动 Activity ,但我需要它!如果我注释掉其他布局 Activity ,我将无法工作...

如果有帮助,这是我的两个 Activity :

<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="#000000"
tools:context="comp380.musicvisualizer.Visualizer" >

<ListView
    android:id="@+id/song_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</ListView>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
tools:context="comp380.musicvisualizer.Visualizer" >

<ImageView
    android:id="@+id/splashscreen"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:src="@drawable/logo"
    android:layout_gravity="center"/>

最佳答案

我很想将两者都作为 fragment 并在它们之间切换。但是,如果您不想这样做,您可以将两个 View 都放在同一布局中,并在三秒钟后更改可见性。您的观点是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
tools:context="comp380.musicvisualizer.Visualizer" >

<ImageView
    android:id="@+id/splashscreen"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:src="@drawable/logo"
    android:layout_gravity="center"/>

<ListView
    android:id="@+id/song_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:visibility="gone" >
</ListView>

然后在 Activity 中执行如下操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout); //the layout above

    displaySplash(); // I guess this waits three seconds

    // get refs to the views
    ImageView splashScreen = (ImageView) findViewById(R.id.splashscreen);
    ListView songList = (ListView) findViewById(R.id.song_list);

    // swap the visibility
    splashScreen.setVisibility(View.GONE);
    songList.setVisibility(View.VISIBLE);

}

关于Android:从一个布局 Activity 切换到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870329/

相关文章:

安卓 JSON 对象

java - 如何将单选按钮的部分描述设置为粗体?

android - 自定义 View 不会添加到预定义的 XML 布局中

java - 如何使用 JavaScript 在 Android Studio 中创建合适的 UI?

android-layout - Android RatingBar 大小

android - 在远程服务中使用 AsyncTask

android - 为什么带线程的倒计时计数器显示错误的值?

android - 对 Android Studio 中的 Scrollview 滚动问题进行故障排除

java - Android:支持 FEATURE_SECURE_PROCESSING 的 DOM XML 解析器?

java - 在Android中加载XML资源