【问题标题】:Return value from DialogFragment to other acivity从 DialogFragment 返回值到其他活动
【发布时间】:2016-06-09 17:18:57
【问题描述】:

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

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();

}

}

【问题讨论】:

    标签: android dialogfragment


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在您的 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);
      

      【讨论】:

        【解决方案3】:

        永久保存:- 为了在活动中永久保存您的价值,您可以使用数据库说 sqlite 。 临时保存:- 1. 对于这些,您可以选择全局 ArrayList 并通过它来存储 . 2.您可以使用这里描述的回调,这与您遇到的问题几乎相同Callback to a Fragment from a DialogFragment

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

        【讨论】:

          猜你喜欢
          • 2015-07-26
          • 2012-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-04
          • 1970-01-01
          相关资源
          最近更新 更多