【问题标题】:Creating a Title Page Activity创建标题页活动
【发布时间】:2013-10-22 19:07:58
【问题描述】:

有一个关于一些 android manifest 和活动协调的问题。我创建了一个直接进入主要活动的应用程序,用户可以从中与应用程序进行交互。我想创建一个显示应用程序简单标题的活动(可能带有图片,但那是稍后......),然后在几秒钟的延迟后切换到主要活动。这是我到目前为止所拥有的......

TitleActivity:

public class TitleActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_title);
    try {
        Thread.sleep(3000);
    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
    Intent intent = new Intent(this,MainActivity.class);
    startActivity(intent);
}
...

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="khandy.application.convertible"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="khandy.application.convertible.TitleActivity"
        android:label="@string/title_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="khandy.application.convertible.MainActivity"
        android:label="@string/app_name" >
    </activity>
...

启动时发生的情况是,我的视图/小部件都没有显示在 title_activity 上,而 3 秒延迟发生,然后它切换到主要活动。然后,当我按下 android 后退按钮时,我退回到标题活动,该活动与视图/小部件一起运行。我相当确定没有出现的视图/小部件与我非常粗糙的多线程有关......

所以,我的问题是:

  1. 如何在标题活动时显示我的视图/小部件 是第一次打开吗?
  2. 如何将主要活动设置为在 后退按钮被按下?也就是说,我怎样才能使用中的后退按钮 返回安卓主屏幕的主要活动?

谢谢!

【问题讨论】:

    标签: java android multithreading android-activity


    【解决方案1】:

    在 mainactivity 启动后完成 titleactivity,这解决了问题 2. 使用

    Intent intent = new Intent(this,MainActivity.class);
    startActivity(intent);
    finish();
    

    对于问题 1,使用以下代码

    public class SplashScreen extends Activity{
    
    private SplashHandler mSplashHandler = new SplashHandler();
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.splash);
    
        mSplashHandler.sendEmptyMessageDelayed(SplashHandler.TIMER_EXPIRED, 5);
    }
    
    
    
    
    class SplashHandler extends Handler {
        static final int TIMER_EXPIRED = 100;
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case TIMER_EXPIRED:
                Intent in = new Intent(SplashScreen.this, nextActivity.class);
                startActivity(in);
                finish();
                break;
    
            default:
                break;
            }
        }
    }
    
    @Override
    protected void onDestroy() {
        mSplashHandler = null;
        super.onDestroy();
    }
    }
    

    【讨论】:

      【解决方案2】:

      我想你想要一个 SplashScreen:

      public class TitleActivity extends Activity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_title);
      
      
      
             new Handler().postDelayed(new Runnable(){
                  @Override
                  public void run() {
      
                       Intent intent = new Intent(TitleActivity.this,MainActivity.class);
                       TitleActivity.this.startActivity(intent);
                       TitleActivity.this.finish();
                  }
              }, 3000);
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 2017-05-04
        相关资源
        最近更新 更多