2013-05-28 173 views
0

我有一個基本的Android應用程序設置了兩個活動。問題是,第一個打開,並永遠停留在那裏,第二個不會啓動。Android,第二次活動不會啓動

任何人都可以說出了什麼問題嗎?

MainActivity.java

package com.desecrationstudios.firstapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

int counter; 
Button add, sub; 
TextView display; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.linear); 
    counter = 0; 
    add = (Button) findViewById(R.id.bAdd); 
    sub = (Button) findViewById(R.id.bSub); 
    display = (TextView) findViewById(R.id.tvDisplay); 

    add.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 
      counter++; 
      display.setText("Your total is " + counter); 
     } 
    }); 

    sub.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 
      counter--; 
      display.setText("Your total is " + counter); 
     } 
    }); 
} 

@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; 
} 

} 

Splash.java:

package com.desecrationstudios.firstapp; 

import android.app.Activity; 
import android.os.Bundle; 

public class Splash extends Activity{ 

@Override 
protected void onCreate(Bundle splash) { 
    super.onCreate(splash); 
    setContentView(R.layout.splash); 
} 

} 

AndroidManifest.xml中

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

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

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

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
    </activity> 

</application> 

</manifest> 

謝謝!

回答

5

你忘記開始MainActivity活動從Splash活動。因此請將其啓動爲:

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

    // start MainActivity here 

    Intent intent=new Intent(this,MainActivity.class); 
    startActivity(intent); 
} 
+0

這樣做會給我兩個錯誤,一個是「構造函數Intent(Splash,MainActivity)未定義」,另一個「不包含MainActivity類型的封閉實例可以在範圍內訪問」 –

+1

請參閱我的答案use'Intent intent = new Intent (this,MainActivity.class);'而不是'new Intent(Splash,MainActivity)' –

+0

這使得它工作,但現在MainActivity在Splash之前啓動。 –

1

您啓動了Splash Activity,但沒有任何內容可以啓動第二個。您必須創建一個Intent並使用startActivity()啓動它。

1

我看到的問題是你不要從你的飛濺活動意圖開始你的MainActivity。

我建議是這樣的:

Thread pause = new Thread(){ 
    public void run(){ 
    try { 
     sleep(3000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    }finally{ 
     Intent i = new Intent("your.path.to.MAINACTIVITY"); 
     startActivity(i); 
     finish(); 
    } 
    } 
}; 
pause.start(); 

您設置的內容視圖後添加這是你onCreate方法。 這會暫停您的應用程序3秒鐘,然後在暫停後啓動您的MainActivity。

注意

要改變的時候你的應用程序暫停變革的睡眠(3000),以毫秒數量,你想讓它停下來。

此外,當你指定你的類名應該是全部大寫的意圖,但包名應該全部小寫。

2

您可以嘗試使用此代碼替換您的飛濺類:

package com.desecrationstudios.firstapp; 
import android.app.Activity; 
import android.os.Bundle; 
public class Splash extends Activity{ 
private static long SLEEP_TIME = 5; 
@Override 
protected void onCreate(Bundle splash) { 
    super.onCreate(splash); 
    setContentView(R.layout.splash); 
    IntentLauncher launcher = new IntentLauncher(); 
    launcher.start(); 
} 
private class IntentLauncher extends Thread { 
    public void run() { 
     try { 
    // Sleeping 
     Thread.sleep(SLEEP_TIME*1000); 
     } catch (Exception e) { 
     Log.e(TAG, e.getMessage()); 
     } 

     // Start main activity 
     Intent intent = new Intent(Splash.this, MainActivity.class); 
     Splash.this.startActivity(intent); 
     Splash.this.finish(); 
    } 
} 
} 

注:SLEEP_TIME變量表示要顯示啓動畫面的時間。

相關問題