从DialogFragment返回值到其他acivity

时间:2016-06-09 17:18:58

标签: android dialogfragment

这是我的对话框片段。在下面你可以看到字符串选择,在我从对话框中选择数字列表后保留结果。 如何在其他活动中保存此值?

final   CharSequence[] items= {"1","2","3","4"};

String selection;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){



    AlertDialog.Builder builder= new AlertDialog.Builder(getActivity());
    builder.setTitle("CHOOSE YOUR ITEM TO DELETE").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
                case 0:
                    selection=(String) items[which];
                    break;
                case 1:
                    selection=(String) items[which];
                    break;
                case 2:
                    selection=(String) items[which];
                    break;


            }

        }
    }).setPositiveButton("OK", new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(getActivity(),"Your item to delete is  "+ selection,Toast.LENGTH_SHORT).show();

        }




    });
    return builder.create();

}

}

3 个答案:

答案 0 :(得分:0)

定义一个监听器/回调,并让另一个Activity实现并对此DialogFragment中的选择作出反应。 StackOverflow包含许多实现示例。

答案 1 :(得分:0)

在您的Activity和私人variable中定义一个公开方法,如下所示。

private String mString;

public setString(String s)
{
   this.mString = s;
}

当用户点击按钮获取活动并设置如下所示的选定字符串时:

((YourActivity)getActivity).setString(selectedString);

您可以将字符串传递给Bundle的其他活动。

如果您从许多活动中显示此DialogFragment,则可以定义Listener并实施您的活动。

public interface SelectionListener{
   void onStringSelected(String s);
}

((SelectionListener)getActivity).onStringSelected(selectedString);

答案 2 :(得分:0)

永久保存: - 为了在活动中永久保存您的价值,您可以使用数据库说sqlite。 临时储蓄: - 1.对于这些,你有一个全局ArrayList选项,你可以存储。 2.您可以使用此处所述的回调,这与您Callback to a Fragment from a DialogFragment

几乎相同

您  可以查看这些示例以获取更多详细信息http://www.kylebeal.com/blog/2011/11/android-datepickerdialog-and-the-dialogfragment/