Android:单击列表中的某个项目后显示新片段的问题
我有一个项目列表(Stations.java),我试图在其中一个项目中实现一个单击,以显示所有详细信息。它正确地显示了项目列表,但是当我尝试重定向到StationDetails时,setOnItemClickListener上出现了一个错误 错误: android.content.ActivityNotFoundException:找不到显式活动类 但我认为错误在于我执行了意图。我的意思是有点不对劲 代码如下:Android:单击列表中的某个项目后显示新片段的问题,android,android-intent,android-fragments,Android,Android Intent,Android Fragments,我有一个项目列表(Stations.java),我试图在其中一个项目中实现一个单击,以显示所有详细信息。它正确地显示了项目列表,但是当我尝试重定向到StationDetails时,setOnItemClickListener上出现了一个错误 错误: android.content.ActivityNotFoundException:找不到显式活动类 但我认为错误在于我执行了意图。我的意思是有点不对劲 代码如下: public class Stations extends Fragment {
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);
}
}
}
});
}
... }
下面是清单,也许这会有所帮助
<?xml version="1.0" encoding="utf-8"?>
谢谢您在清单中声明stationDetails.class了吗
NO!!
你会给出的答案是,因为它是一个碎片
那么,你为什么要像活动一样打开或启动它???
这样做
原因是android将其视为一项活动,但事实并非如此,它最终会出现错误。。片段在活动上运行,因此您可以将片段嵌入到活动中。。
编辑:你想做什么很好,但是如果你想打开一个活动,我猜它是stationDetails.class,那么我建议你像这样在清单中声明它
<activity
android:name=".StationDetails"
android:label="your stationdetails name" >
</activity>
public class StationDetails extends Activity{
有了它,您的StationDetails类就是一个活动。但是如果您想将StationDetails视为片段,那么请使用第一个方法
让我知道它是否有用我已经测试过,但它不起作用。我刚开始使用安卓系统,所以我真的不知道每件事是如何运作的。让我解释一下我想要什么。我有一个带有发票列表的片段,现在我希望在用户单击一个项目时实现,然后显示所有详细信息。在看到你的评论之后,也许我要做的是在onclicklistener中打开一个新的活动,而不是一个片段(我知道在你回答之后我的代码是错误的),不是吗?如果它是正确的,我该怎么做?什么不起作用?打开碎片?好吧,我正在编辑答案answer@gon250Problem现在,我可以看到新的片段,但它与旧片段重叠。是的。。这是因为添加代码{transaction.add(R.id.fragment_container,station);},所以将其更改并使其替换为{transaction.replace(R.id.fragment_container,station);}。代码在括号内@gon250
Fragment station = new StationDetails();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, station);
transaction.commit();
<activity
android:name=".StationDetails"
android:label="your stationdetails name" >
</activity>
public class StationDetails extends Activity{