Articles of android dialogfragment

Android的DialogFragment是空白的

我在创build对话框时遇到了问题。 它确实出现了,但里面是空的,只是一个空白的框显示​​。 对话类: public class SomeDialog extends DialogFragment{ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.somelayout, null)); return super.onCreateDialog(savedInstanceState); } } 在一个活动中,创build一个对象并调用show方法: SomeDialog obj = new SomeDialog(); obj.show(getFragmentManager(), "randomtag");

如何从DialogFragment读取/写入首选项?

我想从DialogFragment中的首选项文件读取。 如果我这样做: prefs = getSharedPreferences("numberPicker.preferences", 0); 那么我得到一个编译时错误,因为getSharedReference是一个ContextWrapper方法,但DialogFragment不是一个ContextWrapper(我使用android.support.v4.app.DialogFragment向后兼容的方式)。 如果可选地,作为一种“解决方法”,我使用在类InitSpel(这是一个FragmentActivity,因此是一个ContextWrapper)中创build的SharedPreferences对象prefs,然后我得到没有错误(在编译时,也没有在运行时),但值不存储(下次我启动应用程序的值baan1和baan2仍然是0)。 怎么解决? package mypackage; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.ComponentName; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; public class VraagBanenDialogFragment extends DialogFragment { private View v; private EditText editText1; private EditText editText2; //private ArrayList<Baan> baanNummers; private int[] […]

AutoCompleteTextView只允许build议的选项

我有一个DialogFragment包含AutoCompleteTextView ,并Cancel和OKbutton。 AutoCompleteTextView提供了我从服务器获得的用户名的build议。 我想要做的是限制用户只能input现有的用户名。 我知道我可以检查用户是否存在,当用户点击OK ,但有其他方式,让我们说不允许用户input字符,如果不存在这样的用户名。 我不知道如何做到这一点,因为每input一个字符,我只能得到5个build议。 服务器是这样实现的。 任何build议都欢迎。 谢谢

android中片段/对话框之间的通信

我有一个有两个片段的活动:一个用于在GridView中显示产品,另一个用于显示用户添加到订单(ListFragment)的产品。 当用户在网格视图中点击一个产品时,我需要的是显示一个对话框(DialogFragment),在这个对话框中我要求产品的数量。 然后,当用户点击对话框中的接受,我想产品出现在ListFragment。 一方面,我必须将对象产品传递给对话框,以便将其名称显示为对话框的标题(例如)。 所以我做的就是这样通过: public static class ProductDialog extends DialogFragment { static ProductDialog newInstance(ProductVO product) { ProductDialog f = new ProductDialog(); Bundle args = new Bundle(); args.putSerializable("product", product); f.setArguments(args); return f; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { ProductVO product = (ProductVO) getArguments().getSerializable("product"); return new AlertDialog.Builder(getActivity()) .setIcon(R.drawable.ic_dialog_add) .setTitle(R.string.add_product) … .setPositiveButton(R.string.accept, new DialogInterface.OnClickListener() { public […]

如何在API应用程序中使用NumberPicker?

我的应用程序的最小sdk是7,但是我可以使用来自sdk版本11的DialogFragment,因为它位于lib目录中的支持库中。 我想做这样的例子: http : //developer.android.com/guide/topics/ui/controls/pickers.html 但是我想使用来自sdk版本11的NumberPicker小部件,但我的应用程序不允许这样做。 我必须添加其他支持库吗? 我怎样才能使用这个组件? 谢谢。

Android Alert Dialog无法find视图

我无法让AlertDialog将文本传回给调用它的活动。 看来问题是它调用findViewByID时找不到合适的EditText,但我是Android新手,不知道为什么。 代码如下: public class ModifyDialogFragment extends DialogFragment { /* The activity that creates an instance of this dialog fragment must * implement this interface in order to receive event callbacks. * Each method passes the DialogFragment in case the host needs to query it. */ public interface MDialogListener { public void onMDialogPositiveClick(String newValue); } […]

在对话框片段选项select上更新片段

我有片段,在组件上点击popup窗口DialogFragment。 该对话框片段包含选项列表。 当从列表选项被选中我想通知片段,所以我可以运行字段更新程序。 我做了这样的事情 @Override public void onClick(DialogInterface dialog, int item) { updateSharedPreference(item); Log.e("ProfilePersonaListDialog", "Click on dialog, inside onClick"); OnCloseListDialogListener act = (OnCloseListDialogListener) getActivity(); act.onDialogListSelection(); dismiss(); } 但是,getActivity()在FragmentActivity上调用,而不是触发对话框片段的片段。 我可以杀死当前打开/正在运行的片段,并调用一个新的实例来获取更新的字段,但这是我想避免的肮脏的解决scheme。 任何build议如何去对此片段的更新一次在对话框片段select选项?

在DialogFragment中从EditText检索值

我正在通过对话框中的Google Android开发者页面,特别是本节。 但是,我没有以编程方式创buildDialogFragment消息, layout_newpayperiod.xml使用以下元素创build了一个名为layout_newpayperiod.xml的预设布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinner_payperiod" android:layout_width="fill_parent" android:layout_height="48dp" android:padding="8dp" android:entries="@array/pay_periods" /> <EditText android:id="@+id/edittext_savepercent" android:layout_width="fill_parent" android:layout_height="48dp" android:padding="8dp" android:inputType="number" android:hint="Percent to Save" /> <EditText android:id="@+id/edittext_payment" android:layout_width="fill_parent" android:layout_height="48dp" android:padding="8dp" android:inputType="numberDecimal" android:hint="Total Payment" /> </LinearLayout> 当我调用DialogFragment时,它显示为正常,Spinner具有正确的值。 我填写条目并点击“确定”,但是当我尝试从微调器和两个EditText字段中检索值时,应用程序强制closures一个NumberFormatException: Invalid double "" 。 我觉得我没有正确地检索视图。 任何人都可以帮我解决这个问题吗? 谢谢! public class StartPayperiodDialogFragment extends DialogFragment { […]

在DialogFragment上commitAllowingStateLoss

我有一个IllegalStateException显示一个DialogFragment : java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 我知道为什么发生,但我想通过重写DialogFragment show函数显示对话框上使用commitAllowingStateLoss : public void show(FragmentManager manager, String tag) { mDismissed = false; mShownByMe = true; FragmentTransaction ft = manager.beginTransaction(); ft.add(this, tag); ft.commit(); //replace it by commitAllowingStateLoss } 但我不访问mDismissed和mShownByMevariables,我怎样才能访问这些variables来修改它们,因为它是父母做的。

活动泄露了窗口com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0

我正在开发一种反馈types的应用程序,当我点击“submitnow”button时我收到以下错误 活动已经泄露窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0 以下是我的代码,请帮助我。 public class SignOut_Activity extends SherlockActivity implements OnClickListener { Button btnSubmitNow, btnSubmitLater; ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.signout); ((TextView) findViewById(R.id.tvSubTitle)) .setText(StoresListAdapter.StoreName); btnSubmitNow = (Button) findViewById(R.id.btnSubmitNow); btnSubmitLater = (Button) findViewById(R.id.btnSubmitLater); btnSubmitNow.setOnClickListener(this); btnSubmitLater.setOnClickListener(this); progressDialog = new ProgressDialog(SignOut_Activity.this); progressDialog.setMessage("Uploading data, please wait…"); } @Override public boolean onOptionsItemSelected( com.actionbarsherlock.view.MenuItem item) { […]