2013-06-03 25 views
0

由於我還是Android的新手(已於3周前開始),因此我的MainActivity類基於棄用的TabActivity超類(因爲我想適應版本10-12)。在我的MainActivity類中,我創建了五個主要意圖,其中三個意圖是基於FragmentActivity的活動(預計會有很多深入細分)。NoClassDefFoundError異常在爲SearchActivity創建意圖期間

這是我的MainActivity類別代碼:

import android.content.Intent; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 
import android.widget.TextView; 
import com.mexter.rewards2go.activities.main.FavoritesActivity; 
import com.mexter.rewards2go.activities.main.ImageListActivity; 
import com.mexter.rewards2go.activities.main.SearchActivity; 

public class MainActivity extends TabActivity { 



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

     Resources resources = getResources(); 
     final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); 
     tabHost.setup(); 

     final Intent imageIntent = new Intent().setClass(MainActivity.this, ImageListActivity.class); 
     TabSpec tabHotDeals = tabHost.newTabSpec(TAB_IMAGE).setIndicator("", resources.getDrawable(R.drawable.tab_promotion_off_btn)).setContent(imageIntent); 

     final Intent searchIntent = new Intent().setClass(MainActivity.this, SearchActivity.class); 
     TabSpec tabSearch = tabHost.newTabSpec(TAB_SEARCH).setIndicator("", resources.getDrawable(R.drawable.tab_search_off_btn)).setContent(searchIntent); 

     final Intent favoritesIntent = new Intent().setClass(MainActivity.this, FavoritesActivity.class); 
     TabSpec tabFavorites = tabHost.newTabSpec(TAB_FAVORITES).setIndicator("", resources.getDrawable(R.drawable.tab_favourite_off_btn)).setContent(favoritesIntent); 

     Intent aboutIntent = new Intent().setClass(this, AboutActivity.class); 
     TabSpec tabAbout = tabHost.newTabSpec(TAB_ABOUT).setIndicator("", resources.getDrawable(R.drawable.wip_info)).setContent(aboutIntent);*/ 

     tabHost.addTab(tabHotDeals); 
     tabHost.addTab(tabSearch); 
     tabHost.addTab(tabFavorites); 

    } 
} 

至於說,該SearchActivity是子類FragmentActivity是像這樣的(請注意,指定了支持V4相關的庫。):

public class SearchActivity extends FragmentActivity { 

    private static final String LOG_TAG = "Search Activity"; 
    Fragment fragment; 
    //Temporary placeholder. 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.search_layout); 

     final FragmentManager fm = getSupportFragmentManager(); 
     fragment = fm.findFragmentById(R.id.fragmentContainer); 

     ImageButton bankButton = (ImageButton) findViewById(R.id.bank_button); 
     ImageButton merchantButton = (ImageButton) findViewById(R.id.merchant_button); 

     merchantButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       if(fragment == null){ 
        fragment = new SearchMerchantFragment(); 
        fm.beginTransaction().add(R.id.fragmentContainer, fragment); 
       } 
      } 
     }); 

     bankButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(fragment == null){ 
        fragment = new SearchBankFragment(); 
        fm.beginTransaction().add(R.id.fragmentContainer, fragment); 
       } 
      } 
     }); 

    } 

} 

當通過模擬器運行應用程序時,系統崩潰,主要原因是它無法檢測到SearchActivity類。它會工作,但如果我不使用FragmentActivity繼承。

這裏的堆棧跟蹤:

06-03 17:53:14.156: E/AndroidRuntime(588): FATAL EXCEPTION: main 
06-03 17:53:14.156: E/AndroidRuntime(588): java.lang.NoClassDefFoundError: com.mexter.rewards2go.activities.main.SearchActivity 
06-03 17:53:14.156: E/AndroidRuntime(588): at com.mexter.rewards2go.MainActivity.onCreate(MainActivity.java:39) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.os.Looper.loop(Looper.java:123) 
06-03 17:53:14.156: E/AndroidRuntime(588): at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-03 17:53:14.156: E/AndroidRuntime(588): at java.lang.reflect.Method.invokeNative(Native Method) 
06-03 17:53:14.156: E/AndroidRuntime(588): at java.lang.reflect.Method.invoke(Method.java:507) 
06-03 17:53:14.156: E/AndroidRuntime(588): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-03 17:53:14.156: E/AndroidRuntime(588): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-03 17:53:14.156: E/AndroidRuntime(588): at dalvik.system.NativeStart.main(Native Method) 

相對於SearchActivity類的碎片已經寫入和搜索佈局xml文件中聲明。包括使用支持v4相關酒吧的項目屬性也已經過檢查。

我仍然不確定我是否錯過了MainActivity或SearchActivity類中的某處。

+0

哪一行是main行中的'39行'? – bricklore

+0

Schnizel:39號線將是: –

回答

0

一些調整:

打開的複選框 - 的Android庫和依賴,以便和導出選項卡的Java構建路徑。然後執行修復項目屬性。

相關問題