我已经搜索过,并为这个问题找到了很多不同的答案,但没有什么能为我解决这个问题。总计android n00b,我提前请你耐心。
I'm having trouble dealing with a FileChooser problem with Android KitKat. As per [here][1], and according to [Steve N][2] i get the impression that this file chooser problem is caused by my android version (4.4.2)
鉴于filechooser不工作,我想实现一个基本的对话框。我要检查设备的Android版本号,然后显示一条消息,引用当前缺乏支持,如果版本号在前面返回4.4。
目前,我只是使用吐司
public boolean checkVersionSupport(){
if (Build.VERSION.RELEASE.equals("4.4.2") {
Toast toast = Toast.makeText(context, androidOS, duration);
toast.show();
}
}
而不是吐司,我想要一个简单的一键式对话框打开,带一个OK按钮,我将用它将用户重定向到本机应用程序并关闭到chrome,整个文件选择器的东西似乎工作正常。
在阅读android开发人员资料后,我发现很多事情都很困难。
我是否需要对话框的布局XML文件?
我在哪里放置我正在创建的MyAlertDialogFragment类的类文件?它可以在java文件夹中的任何位置,还是必须位于子文件夹java / com.myproject中......这对将类导入我的java活动文件有什么影响?
有人可以在Android Developer Materials中解释FragmentAlertDialog的来源。
public static class MyAlertDialogFragment extends DialogFragment {
public static MyAlertDialogFragment newInstance(int title) {
MyAlertDialogFragment frag = new MyAlertDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((**FragmentAlertDialog**)getActivity()).doPositiveClick();
}
}
)
.setNegativeButton(R.string.alert_dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((**FragmentAlertDialog**)getActivity()).doNegativeClick();
}
}
)
.create();
}
}
图标的最佳做法是什么?我看到有关此问题的辩论,但出于简单的目的,在对话框的顶部有一个图标,对于一个基本用法,最简单的方法是什么?我只是将文件复制到res文件夹并引用它们... 48dp?这可能是一个完全不同的问题。
答案 0 :(得分:0)
我是否需要对话框的布局XML文件?
这实际上取决于您使用的Dialog类型。
AlertDialog
不需要指定的布局,您只需使用AlertDialog.Builder()
并设置正/负按钮,以及它如何处理。
DialogFragment onCreateDialog()
方法是使用AlertDialog
的首选方式。它也不需要XML布局,但因此,其布局仍然仅限于是/否选项:look here for complete example
DialogFragment onCreateView()
方法允许您从指定的布局XML创建对话框。因此,如果您希望在" title,description,yes / no" 之外自定义对话框的视图,那么是的,您需要指定对话框片段的XML文件,看看here for an example,虽然建议说你应该看看ButterKnife和Otto库,以使它更好。
我在哪里放置我正在创建的MyAlertDialogFragment类的类文件?它可以在java文件夹中的任何位置,还是必须位于子文件夹java / com.myproject中......这对将类导入我的java活动文件有什么影响?
项目内的任何地方。虽然我更喜欢把它放在像<projectroot>/presentation/fragments/dialog
这样的包装中。
有人可以在Android Developer Materials中解释FragmentAlertDialog的来源。
FragmentAlertDialog
是一个假定的Activity
,从中显示MyAlertDialogFragment
对话框片段,并假设其具有方法doPositiveClick()
和doNegativeClick()
。提供的title
int很可能是/res/values/strings.xml
中定义的字符串资源,用于本地化。例如,R.string.fancy_title_name
。
所以它就是这样的
public class FragmentAlertDialog extends AppCompatActivity {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_fragment_alert_dialog);
//stuff
}
@Override
public void onPostResume() {
MyAlertDialogFragment madf = MyAlertDialogFragment.newInstance(R.string.something);
madf.show(getSupportFragmentManager(), "alert-dialog-fragment");
}
}
否则,MyAlertDialogFragment
只是从DialogFragment
延伸并覆盖onCreateDialog
以在AlertDialog
内创建DialogFragment
。
如果您要问,newInstance()
方法是不会使用参数化构造函数的。片段不应该有参数化构造函数,它们应该用setArguments(Bundle)
方法接收它们的数据。
图标的最佳做法是什么?