Android 从项目开始 activity

Android start activity by Item

我有一个显示在 AlertDialog 中的数组,我想在单击该行时启动一个 activity 并传递一些数据。 我创建了这段代码,但如果是数组,有三个元素,则打开三个活动。我哪里错了?谢谢

 final String[] choiceList = nome_op;
 final String[] idOperatoriList = id_nome_op;
  builder2.setItems(choiceList, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
            for (int i = 0; i < choiceList.length; i++) {
                Intent singole_usc = new Intent(getActivity(), Inserisci_m.class);
                Bundle extras = new Bundle();
                extras.putString("id", idOperatoriList[item]);
                extras.putLong("data", calendarioFooter.getTimeInMillis());
                singole_usc.putExtras(extras);
                startActivity(singole_usc);
            }
        }
    })
...

看来您只需要将代码从 for 循环中取出即可。像这样,

 final String[] choiceList = nome_op;
 final String[] idOperatoriList = id_nome_op;
  builder2.setItems(choiceList, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {

            Intent singole_usc = new Intent(getActivity(), Inserisci_m.class);
            Bundle extras = new Bundle();
            extras.putString("id", idOperatoriList[item]);
            extras.putLong("data", calendarioFooter.getTimeInMillis());
            singole_usc.putExtras(extras);
            startActivity(singole_usc);

    }
})

索引变量 i 无论如何都不会在块中使用。

将 startActivity() 置于 for 循环之外

Intent singole_usc = new Intent(getActivity(),
for (int i = 0;
i < choiceList.length; i++) {
    Inserisci_m.class);
    Bundle extras = new Bundle();
    extras.putString("id", idOperatoriList[item]);
    extras.putLong("data", calendarioFooter.getTimeInMillis());
    singole_usc.putExtras(extras);
}

startActivity(singole_usc);