我想从片段内的listview元素开始一个活动。我搜索过这个,但没有得到任何解决方案。我已经尝试了所有我从stackoverflow得到的所有问题,但没有任何工作,每次我的应用程序崩溃。
这是我的代码。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag_cse1_notes, container, false);
ListView sem1List = (ListView) rootView.findViewById(R.id.sem1Lv);
final ArrayList<String> sem1Courses = new ArrayList<String>();
sem1Courses.add("Applied Physics 1");
sem1Courses.add("Applied Mathematics 1");
sem1Courses.add("Engineering Mechanics");
sem1Courses.add("English Language Usage Essentials");
ArrayAdapter<String> adapterSem1 = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, sem1Courses);
sem1List.setAdapter(adapterSem1);
sem1List.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
final Intent intent;
switch (position){
case 0:
intent = new Intent(getActivity(), phy1Details.class);
startActivity(intent);
break;
case 1:
intent = new Intent(getActivity(), appMath1Details.class);
startActivity(intent);
break;
case 2:
intent = new Intent(getActivity(), engMech1Details.class);
startActivity(intent);
break;
case 3:
intent = new Intent(getActivity(), engLangUseDetails.class);
startActivity(intent);
break;
}
});
return rootView;
}
这是我的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:transcriptMode="alwaysScroll"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvSem1"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="550dip"
android:id="@+id/sem1Lv"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</LinearLayout>`
</ScrollView>
</RelativeLayout>
答案 0 :(得分:0)
试试这个:
intent = new Intent(rootView.getContext(), phy1Details.class);
view.getContext().startActivity(intent);
答案 1 :(得分:0)
只需在itemClickListener
内设置onActivityCreated
即可。
您的活动尚未在onCreateView
内启动,因此您可能遇到NullPointerException。
答案 2 :(得分:0)
您可以使用
列表视图上的setOnItemClickListener
并开始您的新活动。 通过单击列表视图中的任何值,您将获得该值以及您可以使用该值开始任何操作。
请参阅以下代码:此处
选择
变量在列表视图中存储了所选项的值。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
status=true;
String selected = ((TextView) view.findViewById(R.id.singleMessage)).getText().toString();
//Toast.makeText(getApplicationContext(),"selected"+selected ,Toast.LENGTH_LONG).show();
i.putExtra("place_lat", lat);
i.putExtra("place_lng", lng);
startActivity(i);
}
});