如何在片段中加载字符串数组?

最大限度

这是主要活动中的数组

String[] items = {
            "Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5", "Unit 6", "Unit 7",
            "Unit 8", "Unit 9", "Unit10", "Unit 11", "Unit 12", "Unit 13"};
    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items);

这是我要从中将列表加载到片段的onclick方法。

   bt2.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, fragmentB);
            fragmentTransaction.addToBackStack("");
            fragmentTransaction.commit(); 

我有许多字符串数组,想为菜单中的每个按钮分配一个。现在我应该把这段代码放在哪里?

ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
弗拉基米尔·迪莫夫(Vladimir Dimov)

listview必须在片段内部,如果您想通过单击不同的按钮将数据传递到片段,则应该执行以下操作:

已编辑

重要的!

此类仅作为示例(它不遵循android开发中的最佳做法)。

public class MainActivity extends FragmentActivity implements View.OnClickListener{

public static final String LISTVIEW_DATA = "myData";
public static final String DATA_TYPE1 = "DataType1";
public static final String DATA_TYPE2 = "DataType2";
public static final String DATA_TYPE3 = "DataType3";

Bundle bundle = null;

ArrayList<String> items1 = new ArrayList<String>();
ArrayList<String> items2 = new ArrayList<String>();
ArrayList<String> items3 = new ArrayList<String>();

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

    //set some data to the items
    items1 = generateStringData("Unit 1");
    items2 = generateStringData("Unit 2");
    items3 = generateStringData("Unit 3");

    Button btn1 = (Button) findViewById(R.id.button1);
    Button btn2 = (Button) findViewById(R.id.button2);
    Button btn3 = (Button) findViewById(R.id.button3);

    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
    btn3.setOnClickListener(this);
}

private ArrayList<String> generateStringData(String prefix){
    ArrayList<String> temp = new ArrayList<String>();

    for (int i = 0; i<10; i++){
        temp.add(prefix + i);
    }

    return temp;
}

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button1:
            bundle = new Bundle();
            bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE1);
            bundle.putStringArrayList(LISTVIEW_DATA, items1);
            break;
        case R.id.button2:
            bundle = new Bundle();
            bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE2);
            bundle.putStringArrayList(LISTVIEW_DATA, items2);
            break;
        case R.id.button3:
            bundle = new Bundle();
            bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE3);
            bundle.putStringArrayList(LISTVIEW_DATA, items3);
            break;
        default:
            break;
    }

    setListFragment(bundle);
}

private void setListFragment(Bundle arguments){
    Fragment fragment = new MainActivityFragment();

    if (arguments != null){
        fragment.setArguments(arguments);
    }

    FragmentManager fragmentManager = getSupportFragmentManager();
    android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.addToBackStack("");
    fragmentTransaction.commit();
}

当您单击上方的按钮时,此代码会将片段放在片段上方的片段上,就像您通过单击后退按钮可以看到的那样,这不是一个好主意。您应该根据需要重新编写代码。

将参数设置为片段后,您必须在片段内接收数据:

public class MainActivityFragment extends Fragment {

public final static String DATA_TYPE = "DataType";

private ArrayList<String> data = new ArrayList<>();
private String dataTag = "";

public MainActivityFragment() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments() != null){
        data = getArguments().getStringArrayList(MainActivity.LISTVIEW_DATA);
        dataTag = getArguments().getString(DATA_TYPE);
    }

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    ListView listView = (ListView) rootView.findViewById(R.id.listView1);

    ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, data);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int   i, long l) {

            switch (dataTag) {
                case MainActivity.DATA_TYPE1:
                    //here is where you can implement your logic for type 1
                    break;
                case MainActivity.DATA_TYPE2:
                    //here is where you can implement your logic for type 2
                    break;
                case MainActivity.DATA_TYPE3:
                    //here is where you can implement your logic for type 3
                    break;
                default:
                    //do something else
                    break;
            }

        }
    });

    return rootView;
}

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Javascript中加入字符串数组

来自分类Dev

在字符串数组中加载.text文件

来自分类Dev

在字符串数组中加载字符串的有效地址?

来自分类Dev

如何从字符串/字节数组或任何其他容器中加载私钥/公钥

来自分类Dev

在JTable列中加载字符串

来自分类Dev

无法在 XmlDocument 中加载字符串

来自分类Dev

如何在SQL中加逗号分隔的字符串?

来自分类Dev

如何在php中加密和解密字符串?

来自分类Dev

如何在文本中加粗字符串

来自分类Dev

在移动浏览器中加载页面时,如何在所选项目中显示长字符串

来自分类Dev

如何在代码片段中转义字符串内插

来自分类Dev

如何在片段android中拆分字符串?

来自分类Dev

EXTJS 5在商店中加载非常简单的字符串数组

来自分类Dev

如何在字符串数组中制作字符数组?

来自分类Dev

如何在UIImageView中加载图像数组

来自分类Dev

仅在选择时如何在ViewPager中加载片段

来自分类Dev

如何在Android中的片段中加载JSON数据

来自分类Dev

如何使用LoadHTMLString方法在WebView中加载大HTML字符串?

来自分类Dev

如何从打印的数据帧字符串中加载数据帧?

来自分类Dev

如何通过numpy在每行中加载不同数量的字符串元素

来自分类Dev

在Hive数据输入中加载子字符串

来自分类Dev

在iOS swift中加载HTML字符串(UIWebView除外)

来自分类Dev

如何在flutter中加密字符串并在其他设备中解密此加密字符串?

来自分类Dev

从文件加载字符串数组

来自分类Dev

如何在字符串数组中使用keep_if

来自分类Dev

如何在TypeScript中遍历字符串索引数组?

来自分类Dev

如何在多维数组中找到最长的字符串?

来自分类Dev

如何在Ajax中解析字符串数组?

来自分类Dev

如何在Ruby中获取总和的字符串数组

Related 相关文章

  1. 1

    如何在Javascript中加入字符串数组

  2. 2

    在字符串数组中加载.text文件

  3. 3

    在字符串数组中加载字符串的有效地址?

  4. 4

    如何从字符串/字节数组或任何其他容器中加载私钥/公钥

  5. 5

    在JTable列中加载字符串

  6. 6

    无法在 XmlDocument 中加载字符串

  7. 7

    如何在SQL中加逗号分隔的字符串?

  8. 8

    如何在php中加密和解密字符串?

  9. 9

    如何在文本中加粗字符串

  10. 10

    在移动浏览器中加载页面时,如何在所选项目中显示长字符串

  11. 11

    如何在代码片段中转义字符串内插

  12. 12

    如何在片段android中拆分字符串?

  13. 13

    EXTJS 5在商店中加载非常简单的字符串数组

  14. 14

    如何在字符串数组中制作字符数组?

  15. 15

    如何在UIImageView中加载图像数组

  16. 16

    仅在选择时如何在ViewPager中加载片段

  17. 17

    如何在Android中的片段中加载JSON数据

  18. 18

    如何使用LoadHTMLString方法在WebView中加载大HTML字符串?

  19. 19

    如何从打印的数据帧字符串中加载数据帧?

  20. 20

    如何通过numpy在每行中加载不同数量的字符串元素

  21. 21

    在Hive数据输入中加载子字符串

  22. 22

    在iOS swift中加载HTML字符串(UIWebView除外)

  23. 23

    如何在flutter中加密字符串并在其他设备中解密此加密字符串?

  24. 24

    从文件加载字符串数组

  25. 25

    如何在字符串数组中使用keep_if

  26. 26

    如何在TypeScript中遍历字符串索引数组?

  27. 27

    如何在多维数组中找到最长的字符串?

  28. 28

    如何在Ajax中解析字符串数组?

  29. 29

    如何在Ruby中获取总和的字符串数组

热门标签

归档