2011-08-31 50 views
0

我剛剛開始android開發,請耐心等待。新手Android故障:應用程序打開錯誤的main.xml?

我的問題是,當我在模擬器中運行我的應用程序時,彈出屏幕後,彈出的下一個屏幕來自與我工作的應用程序完全不同的應用程序。兩個屏幕衝突都被命名爲相同main.xml),因此可能與它有關,但它們位於完全不同的文件夾和工作空間中。我一直試圖用我的代碼來試驗我的啓動畫面完全顯示後停止屏幕,以便我可以更好地瞭解發生問題的位置,但不成功。

有沒有人有任何想法可能會出錯或我應該至少開始尋找解決這個問題?

文件在eclipse:http://imgur.com/kORdH

主要活動類:

package com.mwmnj.criticmatch; 

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

public class CriticMatchActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);  
    } 
} 

main.xml中:

<?xml version="1.0" encoding="utf-8" ?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:padding="20dp" 
    android:weightSum="1"> 
    <TextView android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/textView1" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Hello!" 
     android:layout_gravity="center" /> 
    <TextView android:textAppearance="?android:attr/textAppearanceMedium" 
     android:id="@+id/textView2" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="criticmatch">android:layout_gravity="center"></TextView> 
    <Button android:text="Proceed" android:layout_width="match_parent" 
     android:layout_height="wrap_content" android:id="@+id/button1" 
     android:layout_marginTop="50dp" /> 
</LinearLayout> 

飛濺類:

package com.mwmnj.criticmatch; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
public class Splash extends Activity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     Thread timer = new Thread(){ 
      public void run(){ 
       try{ 
        sleep(5000); 
       } catch (InterruptedException e){ 
        e.printStackTrace(); 
       }finally{ 
        Intent openStartingPoint = new Intent("matt.meyer.criticmatch.MENU"); 
        startActivity(openStartingPoint); 
       } 
      } 
     }; 
     timer.start(); 
    } 
} 

splash.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/crbackground" 
    > 


</LinearLayout> 

的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.mwmnj.criticmatch" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <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=".CriticMatchActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.mwmnj.criticmatch.CRITICMATCHACTIVITY"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 
+0

嘗試在eclipse中的**其他**項目上單擊鼠標右鍵,然後選擇「關閉項目」,看看它是否做了什麼。確保你正在運行正確的項目 - 我知道這聽起來很愚蠢,但我一直都這樣做! –

+0

你有沒有得到這個排序?我昨晚測試了這個方法(使用intent的動作名稱),一切都完美無缺。 –

回答

0

你的問題是在這裏:

Intent openStartingPoint = new Intent("matt.meyer.criticmatch.MENU"); 
startActivity(openStartingPoint); 

就我所知,這是指向其他應用程序。試試這個:

Intent openStartingPoint = new Intent(Splash.this, CriticMatchActivity.class); 
startActivity(openStartingPoint); 

使用操作名稱應該工作也一樣,只要它在AndroidManifest.xml名稱相匹配:

Intent openStartingPoint = new Intent("com.mwmnj.criticmatch.CRITICMATCHACTIVITY"); 
+0

阿賓果,這似乎是一個問題。你的代碼建議拋出一個錯誤。我試過這也無濟於事:\t \t \t \t \t意圖openCriticMatchActivity =新的意圖(「matt.meyer.criticmatch。MAIN「); \t \t \t \t \t startActivity(openCriticMatchActivity); – darko

+0

‘ActivityManager:警告:活動尚未開始,目前的任務已被帶到前面’和仿真器帶來了同樣的main.xml我不想 – darko

+0

!你的包的名字是'com.mwmnj.criticmatch'還是它是'matt.meyer.criticmatch'? –

0

我的猜測是,你有錯projecte在Eclipse中選擇,在包瀏覽器中。

項目或其中一個,如果它的源文件應選擇laucher lauch這個應用程序。即使您目前正在編輯此項目的來源。