自定义对话框片段示例
Custom Dialog Fragment Examples
很抱歉问这个问题。但是我很难掌握如何创建自定义 DialogFragment。
到目前为止,我只设法创建了一个自定义对话框。这很容易做到。我们只是简单地扩展了一个对话框 class 并使用我们的自定义布局设置了内容视图。
我想知道是否有人可以提供自定义 DialogFragment 的简单示例。
我正在寻找一种方法来创建带有多个按钮的警报对话框。
谢谢
其实我不知道它会对你有帮助还是not.Cause我不清楚你是什么类型的视图want.But我给你一个示例代码,这样你就可以根据自己的需要修改..我为我的 dtmf functionality.Change 应用程序开发了图像和您的布局 xml..
//DtmfDialogFragment.java
package com.sp.zps.ui;
import com.sp.zps.R;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockDialogFragment;
public class DtmfDialogFragment extends SherlockDialogFragment {
private static final String EXTRA_CALL_ID = "call_id";
public static DtmfDialogFragment newInstance(int callId) {
DtmfDialogFragment instance = new DtmfDialogFragment();
Bundle args = new Bundle();
args.putInt(EXTRA_CALL_ID, callId);
instance.setArguments(args);
return instance;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setView(getCustomView(getActivity().getLayoutInflater(), null, savedInstanceState))
.setCancelable(true)
.setNeutralButton("Done", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
})
.create();
}
EditText dialPadTextView;
@SuppressLint("NewApi")
public View getCustomView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.in_call_dialpad, container, false);
View keyboard = v.findViewById(R.id.dialkeyboard);
dialPadTextView = (EditText) v.findViewById(R.id.digitsText);
ImageButton[] btns = new ImageButton[12];
setButtonView(btns, keyboard);
for (final ImageButton btn : btns) {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialButtonPressed(v);
}
});
}
if (android.os.Build.VERSION.SDK_INT >= 11) {
dialPadTextView.setTextIsSelectable(true);
}
return v;
}
private void dialButtonPressed(View v){
String pressedKey = "";
switch (v.getId()) {
case R.id.button0:
pressedKey = "0";
break;
case R.id.button1:
pressedKey = "1";
break;
case R.id.button2:
pressedKey = "2";
break;
case R.id.button3:
pressedKey = "3";
break;
case R.id.button4:
pressedKey = "4";
break;
case R.id.button5:
pressedKey = "5";
break;
case R.id.button6:
pressedKey = "6";
break;
case R.id.button7:
pressedKey = "7";
break;
case R.id.button8:
pressedKey = "8";
break;
case R.id.button9:
pressedKey = "9";
break;
case R.id.buttonstar:
pressedKey = "*";
break;
case R.id.buttonpound:
pressedKey = "#";
break;
default:
break;
}
udpadatePhonePad(pressedKey);
}
private void udpadatePhonePad(String pressedkeyVal) {
int pos = dialPadTextView.getSelectionStart();
dialPadTextView.getText().insert(pos, pressedkeyVal);
}
private void setButtonView(ImageButton[] btns, View keyboard) {
btns[0] = (ImageButton) keyboard.findViewById(R.id.button0);
btns[1] = (ImageButton) keyboard.findViewById(R.id.button1);
btns[2] = (ImageButton) keyboard.findViewById(R.id.button2);
btns[3] = (ImageButton) keyboard.findViewById(R.id.button3);
btns[4] = (ImageButton) keyboard.findViewById(R.id.button4);
btns[5] = (ImageButton) keyboard.findViewById(R.id.button5);
btns[6] = (ImageButton) keyboard.findViewById(R.id.button6);
btns[7] = (ImageButton) keyboard.findViewById(R.id.button7);
btns[8] = (ImageButton) keyboard.findViewById(R.id.button8);
btns[9] = (ImageButton) keyboard.findViewById(R.id.button9);
btns[10] = (ImageButton) keyboard.findViewById(R.id.buttonstar);
btns[11] = (ImageButton) keyboard.findViewById(R.id.buttonpound);
}
}
像这样调用这个片段..
DtmfDialogFragment newFragment = DtmfDialogFragment.newInstance(callId);
newFragment.show(getSupportFragmentManager(), "dialog");
希望能帮到你正确的方法..
很抱歉问这个问题。但是我很难掌握如何创建自定义 DialogFragment。
到目前为止,我只设法创建了一个自定义对话框。这很容易做到。我们只是简单地扩展了一个对话框 class 并使用我们的自定义布局设置了内容视图。
我想知道是否有人可以提供自定义 DialogFragment 的简单示例。
我正在寻找一种方法来创建带有多个按钮的警报对话框。
谢谢
其实我不知道它会对你有帮助还是not.Cause我不清楚你是什么类型的视图want.But我给你一个示例代码,这样你就可以根据自己的需要修改..我为我的 dtmf functionality.Change 应用程序开发了图像和您的布局 xml..
//DtmfDialogFragment.java
package com.sp.zps.ui;
import com.sp.zps.R;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockDialogFragment;
public class DtmfDialogFragment extends SherlockDialogFragment {
private static final String EXTRA_CALL_ID = "call_id";
public static DtmfDialogFragment newInstance(int callId) {
DtmfDialogFragment instance = new DtmfDialogFragment();
Bundle args = new Bundle();
args.putInt(EXTRA_CALL_ID, callId);
instance.setArguments(args);
return instance;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setView(getCustomView(getActivity().getLayoutInflater(), null, savedInstanceState))
.setCancelable(true)
.setNeutralButton("Done", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
})
.create();
}
EditText dialPadTextView;
@SuppressLint("NewApi")
public View getCustomView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.in_call_dialpad, container, false);
View keyboard = v.findViewById(R.id.dialkeyboard);
dialPadTextView = (EditText) v.findViewById(R.id.digitsText);
ImageButton[] btns = new ImageButton[12];
setButtonView(btns, keyboard);
for (final ImageButton btn : btns) {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialButtonPressed(v);
}
});
}
if (android.os.Build.VERSION.SDK_INT >= 11) {
dialPadTextView.setTextIsSelectable(true);
}
return v;
}
private void dialButtonPressed(View v){
String pressedKey = "";
switch (v.getId()) {
case R.id.button0:
pressedKey = "0";
break;
case R.id.button1:
pressedKey = "1";
break;
case R.id.button2:
pressedKey = "2";
break;
case R.id.button3:
pressedKey = "3";
break;
case R.id.button4:
pressedKey = "4";
break;
case R.id.button5:
pressedKey = "5";
break;
case R.id.button6:
pressedKey = "6";
break;
case R.id.button7:
pressedKey = "7";
break;
case R.id.button8:
pressedKey = "8";
break;
case R.id.button9:
pressedKey = "9";
break;
case R.id.buttonstar:
pressedKey = "*";
break;
case R.id.buttonpound:
pressedKey = "#";
break;
default:
break;
}
udpadatePhonePad(pressedKey);
}
private void udpadatePhonePad(String pressedkeyVal) {
int pos = dialPadTextView.getSelectionStart();
dialPadTextView.getText().insert(pos, pressedkeyVal);
}
private void setButtonView(ImageButton[] btns, View keyboard) {
btns[0] = (ImageButton) keyboard.findViewById(R.id.button0);
btns[1] = (ImageButton) keyboard.findViewById(R.id.button1);
btns[2] = (ImageButton) keyboard.findViewById(R.id.button2);
btns[3] = (ImageButton) keyboard.findViewById(R.id.button3);
btns[4] = (ImageButton) keyboard.findViewById(R.id.button4);
btns[5] = (ImageButton) keyboard.findViewById(R.id.button5);
btns[6] = (ImageButton) keyboard.findViewById(R.id.button6);
btns[7] = (ImageButton) keyboard.findViewById(R.id.button7);
btns[8] = (ImageButton) keyboard.findViewById(R.id.button8);
btns[9] = (ImageButton) keyboard.findViewById(R.id.button9);
btns[10] = (ImageButton) keyboard.findViewById(R.id.buttonstar);
btns[11] = (ImageButton) keyboard.findViewById(R.id.buttonpound);
}
}
像这样调用这个片段..
DtmfDialogFragment newFragment = DtmfDialogFragment.newInstance(callId);
newFragment.show(getSupportFragmentManager(), "dialog");
希望能帮到你正确的方法..