2014-01-27 130 views
0

所以我是新來的,並在android程序上工作,以處理活動和東西無論如何,即時通訊有沒有發現異常類的問題。所以當我運行應用程序時,我得到了我所有活動的列表,當我選擇他們中的任何一個都沒有工作時,我得出結論它的.forName行,即時通訊使用它正確.forName(「包」 + className),其中所有類都位於我的包和拼寫中是正確的。但沒有找到! 這裏是我的代碼全部所有測試數組中的項目是我的活動應用程序活動崩潰

public class MainActivity extends ListActivity { 
    String tests [] = {"LifeCycleTest","SingleTouchTest","MultiTouchTest","KeyTest","AccelerometerTest","AssetsTest", 
      "ExternalStorageTest","SoundPoolTest","MediaPlayerTest","FullScreenTest","RenderViewTest","ShapeTest","BitmapTest", 
      "FontTest","SurfaceViewTest"}; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,tests)); 
    } 

    @Override 
    protected void onListItemClick(ListView list, View view, int position, long id){ 
     super.onListItemClick(list,view,position, id); 
     String testName = tests[position]; 


// my problem 
     try { 
      Class clazz = Class 
        .forName("test.com." + testName); 

      Intent intent = new Intent(this, clazz); 
      startActivity(intent); 

     }catch (ClassNotFoundException e){ 

      e.printStackTrace(); 
     } 
    } 
} 

所以我說的.forName(「test.com。」 +級),現在它只是崩潰,這裏的生命週期類長什麼樣就像我試圖選擇它一樣。 iv完全沒有想法。

public class LifeCycleTest extends Activity{ 
     StringBuilder builder = new StringBuilder(); 
     TextView textView; 

     private void log(String text){ 
      Log.d("LifeCycleTest",text); 
      builder.append(text); 
      builder.append('\n'); 
      textView.setText(builder.toString()); 

     } 


     @Override 
     public void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
      textView = new TextView(this); 
      textView.setText(builder.toString()); 
      setContentView(textView); 
      log("created"); 
     } 

     @Override 
     protected void onResume(){ 
      super.onResume(); 
      log("resumed"); 
     } 

     @Override 
     protected void onPause(){ 
      super.onPause(); 
      log("Paused"); 

      if(isFinishing()){ 
       log("finishing"); 
      } 





    } 
} 

這是我的清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="fox.com" 
      android:versionCode="1" 
      android:versionName="1.0" 
      android:installLocation="preferExternal"> 
    <application android:label="@string/app_name" 
       android:icon="@drawable/mrnom" 
       android:debuggable="true"> 
     <activity android:name=".MainActivity" 
        android:label="@string/app_name"   
        android:configChanges="keyboard|keyboardHidden|orientation"> 
      <activity android:label="Life Cycle Test" 
         android:name=".LifeCycleTest" 
         android:configChanges="keyboard|keyboardHidden|orientation"></activity> 

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

      </activity> 
    </application> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="16"/> 
</manifest> 
+1

看起來我好像有一個點遺漏。試試這個forName(「test.com。」+ testName); –

回答

0

forName("package" + className)你錯過了點。

forName("package" + "." + className)這可能工作

0

正如其他人所說,缺少一個點可以對您的問題。

Class clazz = Class 
        .forName("test.com." + testName); 

如果這樣不能解決問題,您可以發佈錯誤日誌嗎?

+0

遐我忘了提及我也嘗試過,並沒有工作 – user1547386

0

試試這個

Intent intent = new Intent(this, <classname>.class); 
startActivity(intent); 

並確保您包括在的manifest.xml

<activity 
     android:name="<com.packagename.classname>" android:uiOptions="splitActionBarWhenNarrow"> 
    </activity> 
+0

它打我,我沒有它在清單,但仍然不工作是我的 – user1547386

+0

,但它仍然崩潰 – user1547386

+0

@ user1547386請問您可以粘貼您的堆棧Tracee。 – NarendraSoni

相關問題