showDialog弃用。 有什么select?

还有别的东西应该叫什么?

showDialog(TIME_DIALOG_ID); 

在本教程中,但在Eclipse中已经弃用了。

http://developer.android.com/reference/android/app/Activity.html

public final void showDialog(int id)在API级别1中添加

此方法在API级别13中已弃用。请改用FragmentManager中的新DialogFragment类; 这也可以通过Android兼容性包在较老的平台上使用。

不带任何参数的简单版本的showDialog(int,Bundle)。 只需用空参数调用showDialog(int,Bundle)即可。

为什么

  • 一个片段,显示一个对话窗口,在其活动窗口之上浮动。 这个片段包含一个Dialog对象,它根据片段的状态适当地显示它。 对话框的控制(决定何时显示,隐藏,解除)应该通过这里的API完成,而不是直接调用对话框。
  • 这里有一个很好的讨论Android的DialogFragment与对话框
  • DialogFragment的另一个不错的讨论优于AlertDialog

怎么解决?

更多

来自Activity#showDialog(int)

此方法已弃用。
改用FragmentManager使用新的DialogFragment类; 这也可以通过Android兼容性包在较老的平台上使用。

要显示对话框,可以使用下面的代码。 这是显示一个简单的AlertDialog框与多个checkbox:

 AlertDialog.Builder alertDialog= new AlertDialog.Builder(MainActivity.this); . alertDialog.setTitle("this is a dialog box "); alertDialog.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(),"ok ive wrote this 'ok' here" ,Toast.LENGTH_SHORT).show(); } }); alertDialog.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), "cancel ' comment same as ok'", Toast.LENGTH_SHORT).show(); } }); alertDialog.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub Toast.makeText(getBaseContext(), items[which] +(isChecked?"clicked'again i've wrrten this click'":"unchecked"),Toast.LENGTH_SHORT).show(); } }); alertDialog.show(); 

标题

而如果您使用showDialog函数来显示不同的对话框或任何传递的参数,您可以创build一个自函数,并可以在onClickListener()函数下调用它。 就像是:

  public CharSequence[] items={"google","Apple","Kaye"}; public boolean[] checkedItems=new boolean[items.length]; Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt=(Button) findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub display(0); } }); } 

并在函数定义中添加上面给出的对话框的代码。

此代码为我工作。 易于修复,但可能不是一个首选的方式。

 public void onClick (View v) { createdDialog(0).show(); // Instead of showDialog(0); } protected Dialog createdDialog(int id) { // Your code } 
 package com.keshav.datePicker_With_Hide_Future_Past_Date; import android.app.DatePickerDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import java.util.Calendar; public class MainActivity extends AppCompatActivity { EditText ed_date; int year; int month; int day; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed_date=(EditText) findViewById(R.id.et_date); ed_date.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Calendar mcurrentDate=Calendar.getInstance(); year=mcurrentDate.get(Calendar.YEAR); month=mcurrentDate.get(Calendar.MONTH); day=mcurrentDate.get(Calendar.DAY_OF_MONTH); final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day)); int month_k=selectedmonth+1; } },year, month, day); mDatePicker.setTitle("Please select date"); // TODO Hide Future Date Here mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis()); // TODO Hide Past Date Here // mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis()); mDatePicker.show(); } }); } } // Its Working