2014-10-16 32 views
0

我有一個項目列表(Stations.java),我試圖在其中一個項目中實施點擊以顯示所有細節。它正確顯示了項目列表,但當我嘗試重定向到StationDetails時,我在setOnItemClickListener上發生了錯誤。Android:單擊列表項目後顯示新片段的問題

錯誤:

android.content.ActivityNotFoundException: Unable to find explicit activity class

但我覺得當我執行的意圖誤差。我的意思是說有什麼問題。

下面是代碼:

public class Stations extends Fragment { 

final String TAG = "Debugging"; 
final String Url = "..."; 

private ListView lstStations; 
ArrayList<Station> dataset; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.station_list, container, false); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    lstStations = (ListView)getView().findViewById(R.id.lstStations); 
    RequestStations(); 
    lstStations.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      getActivity(); 

      TextView textViewName = (TextView) view.findViewById(R.id.txt_row_station); 
      String stationName = textViewName.getText().toString(); 

      for(Station obj : dataset) { 
       if(obj.getName() == stationName){ 
        Log.d("############","Items " + stationName); 

        Intent intent = new Intent(getActivity(), StationDetails.class); 
        startActivity(intent); 
       } 
      } 
     } 

    }); 

    } 
... } 

下面是我試圖展現片段。

public class StationDetails extends Fragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    //return super.onCreateView(inflater, container, savedInstanceState); 
    return inflater.inflate(R.layout.station_details, container, false); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
} 
} 

下面是清單,也許可以幫助。

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

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

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

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

</application> 

感謝

回答

1

有你在你的清單??聲明stationDetails.class/

NO!! 

,你會給出答案是,因爲它的一個片段......

那麼你爲什麼試圖打開或啓動它就像一個活動? 做到這一點

Fragment station = new StationDetails(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.add(R.id.fragment_container, station); 
transaction.commit(); 

的原因是因爲Android的對待它喜歡它的一個活動,但它不是那麼它的錯誤結束了..片段的活動運行,因此您可以嵌入碎片進入活動.. 編輯:其罰你想要做什麼,但如果你想打開我的猜測是StattionDetails.class那麼我建議的活動,您在這樣

<activity 
    android:name=".StationDetails" 
    android:label="your stationdetails name" >   
</activity> 

清單聲明它,這應該是應用程序標籤 - 的孩子(將其粘貼在.mainactivity下面) 以及您的StationDetails.cl屁股改變延伸到活動這樣

public class StationDetails extends Activity{ 

這個你StationDetails類是activity..but如果你想治療StationDetails的片段,然後用第一種方法 讓我知道,如果它可以幫助

+0

我已經過測試並且不起作用。我新的工作與Android,所以我真的不知道如何運作的一切。讓我來向你解釋我想要的。我有一張帶有發票清單的片段,現在我想要在用戶點擊一個項目時顯示所有細節。看到你的評論後,也許我所要做的就是在onclicklistener中打開一個新的活動,而不是一個片段(我知道你的答案後我的代碼是錯誤的),不是嗎?如果是對的,我該怎麼做? – gon250 2014-10-17 13:52:22

+0

什麼沒有工作?打開片段?好吧,我編輯答案檢查編輯答案@ gon250 – Elltz 2014-10-17 14:15:19

+0

謝謝,這是你評論的第一種方式。 – gon250 2014-10-18 22:01:47