java - 将 fragment 中的 ListView 链接到不同的 Activity

标签 java android listview fragment

我在 fragment 中创建了一个 ListView,但我似乎无法将 ListView 的选择链接到不同的 Activity 。希望有人能帮我解决这个问题,当它不在 fragment 中时,我能够执行同样的事情。

下面的代码显示了与其他 Activity 链接的常规 ListView:

public class Main extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_Main);

    ListView listView2 = (ListView) findViewById(R.id.listView2);
    String[] values = new String[] { "Apple", "Orange", "Banana", "Pineapple", "Kiwi"};


    ArrayAdapter <String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
    listView2.setAdapter(adapter2);

            listView2.setOnItemClickListener(new OnItemClickListener() {

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

                switch( position )
                {
                   case 0:  Intent newActivity = new Intent(Main.this, FirstChoice.class);     
                            startActivityForResult(newActivity, 0);
                            break;
                   case 1:  Intent newActivity1 = new Intent(Main.this, Second Choice.class);     
                            startActivityForResult(newActivity1, 1);
                            break;

                            .
                            .
                            .

以下是我目前的 fragment 代码:

public class Tab1 extends ListFragment{

ListView list;
ArrayAdapter <String> adapter;
Context context;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        context = getActivity();
        View view;
        view = inflater.inflate(R.layout.activity_firstchoice, null);

        String [] elements = context.getResources().getStringArray(R.array.thelist);

        list = (ListView) view.findViewById(R.id.listView1);
        adapter = new ArrayAdapter <String> (context, R.layout.activity_ecfs, R.id.section_label, elements);

        list.setAdapter(adapter);

        return view;
}

public void onListItemClick(ListView l, View v, int position, long id) {
    // Do something with the data
    switch( position )
    {
       case 0:  Intent newActivity = new Intent();     
                startActivityForResult(newActivity, 0);
                break;
       case 1:  Intent newActivity1 = new Intent();     
                startActivityForResult(newActivity1, 1);
                break;
       case 2:  Context context2 = getApplication();
                CharSequence text2 = "Not Available";
                int duration2 = Toast.LENGTH_SHORT;

                Toast toast2 = Toast.makeText(context2, text2, duration2);
                toast2.show();
                break;
    }

  }
}

我希望做一些类似于顶部 ListView 的事情,但使用 fragment 中的那个。

最佳答案

您可以只获取对 Fragment 的父级 Activity 的引用。

    case 0:  
        Intent newActivity = new Intent(getActivity(), FirstChoice.class);     
        startActivityForResult(newActivity, 0);
        break;

或者使用传入的 ListViewView 从中获取 Context

    case 0:  
        Intent newActivity = new Intent(l.getContext(), FirstChoice.class);     
        startActivityForResult(newActivity, 0);
        break;

关于java - 将 fragment 中的 ListView 链接到不同的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424062/

相关文章:

android - 在线性布局中拖放图像

javascript - 如何在 MyAdapter 的 ListView 中添加广告

java - 更改 ListView 的一个元素

android - 如何更改 Android 中选定 ListView 项目的默认背景颜色?

java - RxJava2 - 如何编写分组项目的自定义逻辑?

java - Jetty 客户端无法通过 HTTP/2 连接到 Jetty 服务器

java - 将某些类的 Java 集合转换为字符串集合

java - 在 Android 中读取 XML 文件

java - ViewPager fragment 中的 SwipeToRefresh 布局问题

java - 使用 Byte Buddy 拦截对 Java 8 lambda 表达式的调用