当用户按下对话框的正面按钮时,我想分享适配器的完整内容。 试过这个:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
adapter.add("String1");
adapter.add("String2");
adapter.add("String3");
adapter.add("String4");
dialog.setPositiveButton("Share", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent ();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
for(int i = 0; i <= adapter.getCount(); i++){
intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i));
}
startActivity(Intent.createChooser(intent, "Share via")
);
}
});
它不起作用。当按下“共享”按钮时,它会使应用程序崩溃。 有什么想法吗?
编辑:感谢所有帮助。这是最终解决方案:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < adapter.getCount(); i++){
sb.append(adapter.getItem(i)).append("\n");
}
intent.putExtra(Intent.EXTRA_TEXT, (CharSequence) sb );
答案 0 :(得分:0)
试试这个:
for(int i = 0; **i < adapter.getCount()**; i++)
答案 1 :(得分:0)
试试这个:
for(int i = 0; i < adapter.getCount(); i++){
intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i));
}
这将解决您的问题。
答案 2 :(得分:0)
我猜您在以下行获得了ArrayIndexOutOfBounds异常:
intent.putExtra(Intent.EXTRA_TEXT, adapter.getItem(i)); //at getItem(i)
这是因为上面的条件:
for(int i = 0; i **<=** adapter.getCount(); i++)
由于Java中的索引从0开始,因此如果适配器计数为8,则应该访问0到7之间的索引。 因此,如果您将上述条件删除到以下内容:
for(int i = 0; i **<** adapter.getCount(); i++)
不会有任何例外。 希望有所帮助。
关于你的问题#2,通过intent共享整个数组适配器数据,我认为你可以创建一个String到备份适配器数据的数组列表,并通过以下方式传递该数组列表:
i.putStringArrayListExtra(name, value);
其中name是您正在创建的额外名称(以包名称为前缀),value是String List of String。