从片段内的ListView开始一个活动

时间:2017-02-06 08:06:02

标签: java android

我想从片段内的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>

3 个答案:

答案 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);

        }
    });