2014-10-16 69 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