从DialogFragment获得价值 [英] Get value from DialogFragment

查看:152
本文介绍了从DialogFragment获得价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要的 DialogFragment 驳回何时返回一个值,我中输入了 editQuantity 这一点。

但我没有得到任何方式,使其工作。我可以通过将值通过意图做到这一点,但是,破坏目前活动的进展情况。

有没有什么方式比通过意图将返回我的价值等?

 包com.example.myprojectname;

进口android.app.AlertDialog;
进口android.app.Dialog;
进口android.content.DialogInterface;
进口android.content.Intent;
进口android.content.DialogInterface.OnClickListener;
进口android.os.Bundle;
进口android.support.v4.app.DialogFragment;
进口android.text.InputType;
进口android.util.Log;
进口android.widget.EditText;

公共类QuantityDialogFragment扩展DialogFragment实现OnClickListener {


    私人的EditText editQuantity;

    @覆盖
    公共对话onCreateDialog(包savedInstanceState){
        editQuantity =新的EditText(getActivity());
        editQuantity.setInputType(InputType.TYPE_CLASS_NUMBER);

        返回新AlertDialog.Builder(getActivity())
        .setTitle(R.string.app_name)
        .setMessage(请输入数量)
        .setPositiveButton(OK,这一点)
        .setNegativeButton(取消,NULL)
        .setView(editQuantity)
        。创建();

    }

    @覆盖
    公共无效的onClick(DialogInterface对话框,INT位置){
        字符串值= editQuantity.getText()的toString()。
        Log.d(数量,值);
        dialog.dismiss();
    }
}
 

解决方案

假设你想盼着结果到调用活动:)试试这个code片断:

 公共类QuantityDialogFragment扩展DialogFragment实现OnClickListener {

    私人的EditText editQuantity;

    @覆盖
    公共对话onCreateDialog(包savedInstanceState){
        editQuantity =新的EditText(getActivity());
        editQuantity.setInputType(InputType.TYPE_CLASS_NUMBER);

        返回新AlertDialog.Builder(getActivity())。的setTitle(R.string.app_name).setMessage(请输入数量)
                .setPositiveButton(OK,这一点).setNegativeButton(取消,NULL).setView(editQuantity).create();

    }

    @覆盖
    公共无效的onClick(DialogInterface对话框,INT位置){

        字符串值= editQuantity.getText()的toString()。
        Log.d(数量,值);
        MainActivity callingActivity =(MainActivity)getActivity();
        callingActivity.onUserSelectValue(值);
        dialog.dismiss();
    }
 

}

和您的活动增加:

 公共类MainActivity扩展FragmentActivity {

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        QuantityDialogFragment对话框=新QuantityDialogFragment();
        dialog.show(getSupportFragmentManager(),对话);
    }

    / **
     *从QuantityDialogFragment回调方法,返回用户的价值
     *输入。
     *
     * @参数了selectedValue
     * /
    公共无效onUserSelectValue(字符串了selectedValue){

        // TODO添加您的实现。
    }

}
 

I want the DialogFragment to return a value to me that was entered in editQuantity when dismissed.

But i am not getting any way to make it work. I can do this by passing the value through the intent but that destroys the progress of the current activity.

Is there any way other than passing through intent that will return me value?

package com.example.myprojectname;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.InputType;
import android.util.Log;
import android.widget.EditText;

public class QuantityDialogFragment extends DialogFragment implements OnClickListener { 


    private EditText editQuantity;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        editQuantity = new EditText(getActivity());
        editQuantity.setInputType(InputType.TYPE_CLASS_NUMBER);

        return new AlertDialog.Builder(getActivity())
        .setTitle(R.string.app_name)
        .setMessage("Please Enter Quantity")
        .setPositiveButton("OK", this)
        .setNegativeButton("CANCEL", null)
        .setView(editQuantity)
        .create();

    }

    @Override
    public void onClick(DialogInterface dialog, int position) {
        String value = editQuantity.getText().toString();
        Log.d("Quantity: ", value);
        dialog.dismiss();       
    }
}

解决方案

Assuming that you want to foward result to the calling Activity:) try this code snippet:

public class QuantityDialogFragment extends DialogFragment implements OnClickListener {

    private EditText editQuantity;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        editQuantity = new EditText(getActivity());
        editQuantity.setInputType(InputType.TYPE_CLASS_NUMBER);

        return new AlertDialog.Builder(getActivity()).setTitle(R.string.app_name).setMessage("Please Enter Quantity")
                .setPositiveButton("OK", this).setNegativeButton("CANCEL", null).setView(editQuantity).create();

    }

    @Override
    public void onClick(DialogInterface dialog, int position) {

        String value = editQuantity.getText().toString();
        Log.d("Quantity: ", value);
        MainActivity callingActivity = (MainActivity) getActivity();
        callingActivity.onUserSelectValue(value);
        dialog.dismiss();
    }

}

and on Your activity add :

public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        QuantityDialogFragment dialog = new QuantityDialogFragment();
        dialog.show(getSupportFragmentManager(), "Dialog");
    }

    /**
     * callback method from QuantityDialogFragment, returning the value of user
     * input.
     * 
     * @param selectedValue
     */
    public void onUserSelectValue(String selectedValue) {

        // TODO add your implementation.
    }

}

这篇关于从DialogFragment获得价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆