2012-08-01 6 views
6

Tôi bị ép buộc mỗi khi tôi cố gắng bắt đầu một FragmentActivity từ một Activity bằng Intent. Dưới đây là mã từ Hoạt động:Bắt đầu FragmentActivity từ Hoạt động với Intent

Intent intent = new Intent(getApplicationContext(), OrgHome.class); 
intent.putExtra("Username", organization_name.getText().toString()); 
startActivity(intent); 

Và đây là logcat:

08-01 16:52:45.823: E/AndroidRuntime(600): FATAL EXCEPTION: main 
08-01 16:52:45.823: E/AndroidRuntime(600): java.lang.NoClassDefFoundError: com.project3.organizations.OrgHome 
08-01 16:52:45.823: E/AndroidRuntime(600): at com.project3.organizations.MainActivity$1$1.mobDBResponse(MainActivity.java:76) 
08-01 16:52:45.823: E/AndroidRuntime(600): at com.mobdb.android.MobDBRequest.onPostExecute(MobDBRequest.java:78) 
08-01 16:52:45.823: E/AndroidRuntime(600): at com.mobdb.android.MobDBRequest.onPostExecute(MobDBRequest.java:1) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.os.AsyncTask.finish(AsyncTask.java:417) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.os.Looper.loop(Looper.java:123) 
08-01 16:52:45.823: E/AndroidRuntime(600): at android.app.ActivityThread.main(ActivityThread.java:3683) 
08-01 16:52:45.823: E/AndroidRuntime(600): at java.lang.reflect.Method.invokeNative(Native Method) 
08-01 16:52:45.823: E/AndroidRuntime(600): at java.lang.reflect.Method.invoke(Method.java:507) 
08-01 16:52:45.823: E/AndroidRuntime(600): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
08-01 16:52:45.823: E/AndroidRuntime(600): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
08-01 16:52:45.823: E/AndroidRuntime(600): at dalvik.system.NativeStart.main(Native Method) 
08-01 16:52:48.053: I/Process(600): Sending signal. PID: 600 SIG: 9 

OrgHome.class được định nghĩa trong biểu hiện một cách chính xác. Những gì đang xảy ra ở đây?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.project3.organizations" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="15" /> 
    <uses-permission android:name="android.permission.INTERNET"/> 

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

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

</manifest> 
+0

làm cách nào để bạn biết rằng "OrgHome.class được xác định trong tệp kê khai chính xác"? – mfrankli

+0

Hãy xem bản chỉnh sửa –

+0

Tuyên bố 'gói' ở đầu' OrgHome.java' là gì? – Eric

Trả lời

5

Thay đổi biểu hiện:

Sử dụng này nếu OrgHome là trong cùng một vị trí như MainActivity

<activity android:name=".OrgHome" /> 

Sử dụng này nếu nó trong một thư mục con

<activity android:name=".sub.path.to.OrgHome" /> 

Hoặc chỉ định toàn bộ đường dẫn

<activity android:name="entire.path.to.OrgHome" /> 
+0

Tôi đã thêm lớp bằng trình soạn thảo WYSIWYG vì vậy tôi cảm thấy nó không nên sai như thế này, nhưng tôi sẽ thêm' .' vì nó nằm trong cùng một thư mục –

+0

định nghĩa trong biểu hiện không phải là sai. nó chỉ là sự kết hợp của cách bạn xác định nó với cách bạn đang gọi nó, tôi tin. câu trả lời này chắc chắn là cách tốt nhất để sửa chữa nó. – mfrankli

+0

Bạn có thay đổi đường dẫn tệp không? Trình soạn thảo WYSIWYG không thực hiện thay đổi tham chiếu nếu bạn di chuyển chúng giữa các gói. – DeeV