0

Android のマニフェストとアクティビティの調整について質問があります。ユーザーがアプリとやり取りできるメインアクティビティに直接進むアプリを作成しました。アプリの簡単なタイトルを表示するアクティビティを作成したい (写真付きかもしれませんが、それは後で...)、数秒遅れてメイン アクティビティに切り替わります。これが私がこれまでに持っているものです...

タイトル アクティビティ:

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>
...

起動時に発生するのは、3 秒の遅延が発生している間、ビュー/ウィジェットが title_activity に表示されず、メイン アクティビティに切り替わることです。次に、アンドロイドの戻るボタンを押すと、ビュー/ウィジェットで実行されるタイトル アクティビティに戻ります。ビュー/ウィジェットが表示されないのは、非常に粗いマルチスレッドと関係があると確信しています...

だから、私の質問は次のとおりです。

  1. タイトル アクティビティを最初に開いたときにビュー/ウィジェットを表示するにはどうすればよいですか?
  2. 戻るボタンが押されたときにアプリを終了するようにメイン アクティビティを設定するにはどうすればよいですか? つまり、メイン アクティビティで [戻る] ボタンを使用して Android のホーム画面に戻るにはどうすればよいですか?

ありがとう!

4

2 に答える 2

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();
}
}
于 2013-10-22T19:14:57.763 に答える
1

あなたは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);

    }
}
于 2013-10-22T19:12:06.840 に答える