2014-01-17 27 views
1

我擁有它,以便當用戶單擊列表視圖中的某個項目時,它們將被帶到顯示該項目的其他活動。然而,當我測試這個時,即使我已經在清單中明確定義它,它也會拋出一個ActivityNotFound異常。這不會發生在其他任何類別上。任何想法如何解決?下面是一行代碼導致錯誤,特別是ctx.StartActivity ...ActivityNotFound異常 - 聲明瞭活動

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
      xMessage = (String) parent.getItemAtPosition(position); 
      y = true; 
      setView(xMessage,R.layout.messageclicked, R.id.mS); 

      ctx.startActivity(new Intent(getActivity(),showMessage.class)); 

     } 

    }); 

這裏是清單部分,在那裏我聲明類:

<activity android:name = "com......showMessage" /> 

的... ...有沒有隱藏敏感信息。基本上它是com.x.y.showRide,這是該Activity的正確文件路徑。這裏是清單:

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="16" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.......SplashScreen" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:noHistory="true" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.........MainMenu" 
      android:configChanges="orientation|keyboardHidden" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" /> 
     <activity 
      android:name="com........Register" 
      android:configChanges="orientation|keyboardHidden" 
      android:parentActivityName=".MainMenu" 
      android:screenOrientation="portrait" 
      android:theme="@style/.....Theme" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".MainMenu" /> 
     </activity> 
     <activity 
      android:name="com......SignIn" 
      android:configChanges="orientation|keyboardHidden" 
      android:parentActivityName=".MainMenu" 
      android:screenOrientation="portrait" 
      android:theme="@style/......Theme" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".MainMenu" /> 
     </activity> 
     <activity android:name="com......MainNavigation" /> 
     <activity android:name="com........MainScreen" /> 
     <activity android:name="com.......MainActivity" /> 
     <activity 
      android:name="com.RuMad.......FindARide" 
      android:label="@string/title_activity_find_aride" > 
     </activity> 
     <activity android:name=".OfferRide"/> 
     <activity android:name=".RequestRide"/> 
     <activity android:name ="com......Compose"/> 
     <activity android:name ="com.......IntendedUses"/> 
     <activity android:name ="com.......showPreference"/> 
     <activity android:name = "com.......myRides"/> 
     <activity android:name = "com.......showMessage"/> 
     <activity android:name ="com......OffRe"/> 
     <activity android:name = "com......showRide" />  
     </application> 

</manifest> 
+2

可以顯示完整的崩潰日誌和清單文件。 –

+0

嘗試getApplicationContext()而不是getActivity()? – SoulRayder

+0

請發送您當前的活動和清單的代碼 –

回答

1

一種方法來解決這個問題可能是:

您的活動承載此片段,創建一些功能,說

public void startShowMessageActivity(){ 
     Intent intent = new Intent(this, showMessage.class); 
     startActivity(intent); 
} 

而在你的片段類,調用這種方法使用活動的背景下 - CTX我相信這是(在你的代碼)

所以,從本質上講,說活動是MainActivity.java

(MainActivity(ctx)).startShowMessageActivity(); 

如果上面的語句不工作,嘗試

MainActivity obj = (MainActivity)getActivity(); 
obj.startShowMessageActivity(); 

希望這會有所幫助!

+0

當我嘗試使用你的方法時,它說我需要使方法靜態,但startActivity()不能在靜態方法中使用,因爲它是非靜態的 – shreyashirday

+0

好的..所以你可以做的是創建一個MainActivity(MainActivity對象=(MainActivity)getActivity)的實例,然後使用這個對象來調用這個函數。 (object.startShowMessageActivity();) – droidx

+0

也編輯了包含上述評論的答案。讓我知道是否有問題 – droidx

0

假設你當前活動的MainActivity比請使用此行

startActivity(new Intent(MainActivity .this,showMessage.class)) 
+1

你確定嗎?他正在調用getActivity,這是afaik僅在Fragments中可用的。所以他試圖從一個片段開始活動 – Frame91

+0

不,我只是猜測,因爲他沒有發送完整的代碼,即使我請求,請參閱評論 –