【问题标题】:Android - how to send String from Alertdialog to FragmentAndroid - 如何将字符串从 Alertdialog 发送到 Fragment
【发布时间】:2017-07-11 09:22:41
【问题描述】:

我正在使用 AlertDialog 和 1 EditText。我想知道如何将字符串从AlertDialog 发送到Fragment。

请检查我下面的代码。

 @Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_datasource){
        enterdatasourceId();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

enterdatasourceId的代码是:

 public void enterdatasourceId() {
    LayoutInflater inflater = LayoutInflater.from(this);
    final View dialogView = inflater.inflate(R.layout.cutom_dialog,null);
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

    dialogBuilder.setTitle("Enter you unique ID");
    dialogBuilder.setCancelable(false);
    dialogBuilder.setView(dialogView);

    final EditText datasource1 = (EditText) dialogView.findViewById(R.id.datasource_id);

    dialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            String dsource = datasource1.getText().toString().trim();
            Intent intent = new Intent();
            intent.putExtra("Datasource",dsource);
        }
    });
    dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
    });
    AlertDialog customDialog = dialogBuilder.create();
    customDialog.show();
}

以下是我想要接收该字符串的片段的代码

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Datasource = getActivity().getIntent().getStringExtra("Datasource");
}

在Fragment 中,我想接收我在AlertDialog 中输入的字符串,并且从这里我将该字符串作为参数发送到我的其他类中。我想明确指出,我使用AlertDialog 的Activity 是dashboad2.java,而我想要接收该字符串的片段在同一个Activity (dashboard2.java) 中

【问题讨论】:

  • 意图意图 = new Intent(); intent.putExtra("数据源",dsource);此意图用于转到其他活动?
  • 不!当应用程序启动一个带有edittext的alertdialog弹出并按下确定按钮时,对话框消失并且片段获得焦点
  • 你可以这样使用:Bundle bundle = new Bundle(); fragment.setArguments(bundle);
  • 在片段中我应该如何获取数据
  • 能否分享一些代码

标签: android android-fragments android-intent android-alertdialog


【解决方案1】:

您可以创建一个 DialogFragment。 在 dialogFragment 中创建一个接口。 在你的父片段中实现接口。

这里是如何继续的示例。

public class YourDialogFragment extends DialogFragment {

    OnSubmitListener mListener;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
         Dialog dialog = new Dialog(getActivity());
         dialog.setContentView(R.layout.your_custom_layout);
         dialog.show();

         Button proceed = (Button) dialog.findViewById(R.id.proceedBtn);
         Button cancel = (Button) dialog.findViewById(R.id.cancelBtn);
         EditText datasource1 = (EditText)dialog.findViewById(R.id.datasource_id);

    proceed.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          mListener.GetDataSource(datasource1.getText().toString().trim());
         } 
         dismiss();
        }
    });

    cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dismiss();
        }
    });
         return dialog;
    }



public interface OnSubmitListener {
                void GetDataSource(String dataSrc);
            }
}

在您的片段中实现 YourDialogFragment.OnSubmitListener。它将使您覆盖 GetDataSource(String) 方法,您将在其中获取字符串。

if (id == R.id.action_datasource){
     //        enterdatasourceId();
     YourDialogFragment fragment = new YourDialogFragment ();
     fragment.mListener = getActivity();
     fragment.show((Activity) context).getFragmentManager(), "dialogFragment"); 
     return true;
}

【讨论】:

  • 但是我如何从对话框片段网络中的编辑文本中获取字符串并将其传递给其他片段网络
  • 您正在为此使用界面。 mListener.GetDataSource(datasource1.getText().toString().trim()); 当你在dialogfragment中按下继续按钮时,你会在父片段中的Overridden方法的edittext中得到字符串
  • 在其他片段中我将如何获取传递的字符串
  • 请分享一些代码,我将如何在其他片段中获取传递的字符串
  • 实现 YourDialogFragment.OnSubmitListener,它会强制你重写方法 GetDataSource(String dataSrc) .. 这个字符串 dataSrc 将是 dialogFragment 中的 edittext 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多