java - ListView 项单击打开特定 fragment View 分页器

标签 java android listview android-studio android-fragments

如何通过主 Activity 中的 ListView 项目单击来打开第二个 Activity 中的 fragment 。 我不知道如何通过 ListView 项单击打开特定的 viewpager fragment ,例如: listview 的 Fragment 1 打开滚动 Activity 的 Fragment 1 等等。 如果您愿意,我可以向您发送滚动 Activity java 代码。

public class MainActivity extends AppCompatActivity implements 
View.OnClickListener {
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Button btnSimpleTabs = (Button) findViewById(R.id.scrollingTabs);

    btnSimpleTabs.setOnClickListener(this);
    listView = (ListView) findViewById(R.id.listView1);
    String[] values = new String[]{
            "Fragment 1   ::",
            "Fragment 2   ::",
            "Fragment 3   ::",
            "Fragment 4   ::",
            "Fragment 5   ::",
            "and so on....",
    };
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, values){

    };

    listView.setAdapter(adapter);
    //linking from 1 item to other activity stars with if options//
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

            // global string to class
            String selectedValue = String.valueOf(parent.getItemAtPosition(position));

            switch (selectedValue) {

                case "Fragment 1   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 2   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 3   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 4   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 5   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }

            }


        }
    });
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.scrollingTabs:
            startActivity(new Intent(MainActivity.this, ScrollableTabsActivity.class));
            break;

    }
}
}

最佳答案

我认为您想使用 ScrollableTabsActivity 类中的 View 分页器打开特定 fragment 。 首先,您需要传递引用 (which_fragment) 表示您需要移动哪个 fragment

case "Fragment 1   ::": {
               Intent myIntent = new 
               Intent(view.getContext(), ScrollableTabsActivity.class);
               myIntent.putExtra("which_fragment", 0);//0 is reference for //move framgnet 1
               startActivityForResult(myIntent, 0);
               break;
         }

case "Fragment 2   ::": {
               Intent myIntent = new 
               Intent(view.getContext(), ScrollableTabsActivity.class);
               myIntent.putExtra("which_fragment", 1);//1 is reference for //move framgnet 2
               startActivityForResult(myIntent, 0);
               break;
         }

等等...

在ScrollableTabsActivity中首先设置 View 分页器适配器,viewpager中的一个方法是setCurrentItem

viewpager.setCurrentItem("which_fragment);

您需要在设置适配器后调用此方法

viewpager.setCurrentItem(getIntent().getExtra().getInt("which_fragment"));

关于java - ListView 项单击打开特定 fragment View 分页器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672727/

相关文章:

java - 在Http Web服务器中基于路径参数过滤请求

java - java遍历框架中的neo4j cypher查询

javascript - 如何使html在android浏览器的webview上填充全屏高度

java - Eclipse 不在同一工作区中的两个项目之间导入 jar 依赖项

java - ListView 在 EditText 增长时滚动到顶部

java - 尝试在空对象引用上调用虚拟方法 'void ListView.setAdapter(ListAdapter)'

java - 使用本地依赖项 Gradle 构建 Fat jar

java - 简化代码以根据位置获取最小值、最大值和精确值

wpf - ItemsControl 内的 ListViews 是否有等效的 SharedSizeGroup ?

listview - 如何更改 flutter/dart 中 ListView 项目的背景颜色