android中fragment如何保存edittext文本,如何在Android中使用DialogFragment进行文本输入?...

我想获得一个值,用户输入到一个对话框,使用建议的DialogFragment类为它,对话框构造和运行良好,但我不能返回EditText参数的值父类,没有得到一个空值指针异常。如何在Android中使用DialogFragment进行文本输入?

My DialogHost类,这个构造,返回并链接父按钮。

package jo.app.co;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.app.DialogFragment;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.LayoutInflater;

public class DialogHost extends DialogFragment {

public interface NoticeDialogListener {

public void onDialogPositiveClick(DialogFragment dialog);

public void onDialogNegativeClick(DialogFragment dialog);

}

NoticeDialogListener mListener;

@override

public void onAttach(Activity activity) {

super.onAttach(activity);

try {

mListener = (NoticeDialogListener) activity;

} catch (ClassCastException e) {

throw new ClassCastException(activity.toString());

}

}

@override

public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();

builder.setView(inflater.inflate(R.layout.dialog_add, null))

.setPositiveButton("Save", new DialogInterface.OnClickListener() {

@override

public void onClick(DialogInterface dialog, int id) {

mListener.onDialogPositiveClick(DialogHost.this);

}

})

.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

DialogHost.this.getDialog().cancel();

}

});

return builder.create();

}

}

这是我MainActivity类别表示对话框

package jo.app.co;

import android.app.DialogFragment;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.util.Log;

import android.widget.EditText;

public class MainActivity extends FragmentActivity implements DialogHost.NoticeDialogListener {

@override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

showNoticeDialog();

}

public void showNoticeDialog() {

DialogFragment dialog = new DialogHost();

dialog.show(getFragmentManager(), "DialogHost");

}

@override

public void onDialogPositiveClick(DialogFragment dialog) {

EditText myText = (EditText) findViewById(R.id.item_added);

try {

Log.d ("IN TRY", myText.getText().toString());

}

catch (Exception e) {

Log.e ("IN CATCH", e.toString());

}

}

@override

public void onDialogNegativeClick(DialogFragment dialog) {

Log.d ("INMAIN", "REACHED NEG");

}

}

参考我的对话框的Thisthe布局。

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/item_added"

android:inputType="text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="16dp"

android:layout_marginLeft="4dp"

android:layout_marginRight="4dp"

android:layout_marginBottom="4dp"

android:hint="@string/hint_add_item" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值