Android showDialog已弃用。什么';还有什么选择?
还有什么应该叫的吗Android showDialog已弃用。什么';还有什么选择?,android,dialog,Android,Dialog,还有什么应该叫的吗 showDialog(TIME_DIALOG_ID); 它在中,但在Eclipse中表示已弃用。来自: 此方法已被弃用。 使用新类代替;这也可以通过Android兼容包在旧平台上使用 从 API级别1中添加的公共最终无效显示对话框(int id) 此方法在API级别13中被弃用。使用新的对话框片段 改为使用FragmentManager初始化;这也适用于较旧版本 通过Android兼容性软件包实现的平台 showDialog(int,Bundle)的简单版本,不接受任何 论
showDialog(TIME_DIALOG_ID);
它在中,但在Eclipse中表示已弃用。来自:
此方法已被弃用。使用新类代替;这也可以通过Android兼容包在旧平台上使用 从 API级别1中添加的公共最终无效显示对话框(int id) 此方法在API级别13中被弃用。使用新的对话框片段 改为使用FragmentManager初始化;这也适用于较旧版本 通过Android兼容性软件包实现的平台 showDialog(int,Bundle)的简单版本,不接受任何 论据。只需使用空参数调用showDialog(int,Bundle) 为什么
- 显示对话框窗口的片段,浮动在其活动窗口的顶部。该片段包含一个对话框对象,它根据片段的状态适当地显示该对话框对象。对话框的控制(决定何时显示、隐藏、关闭)应该通过此处的API完成,而不是直接调用对话框
- 这是一个很好的讨论
- 又是一次愉快的讨论
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函数根据传递的参数显示不同的对话框或任何内容,则可以创建一个self函数,并可以在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
}
因此,您必须实现另一个自定义类,而不是调用一个简单的函数?“不推荐”和“不推荐”不是一回事。如果一个不推荐使用的函数仍然有效,并且在我想要支持的旧平台上没有替代方法,我还是继续使用它。@Edward我认为旧平台有替代方法,请检查这里:但是如何在该方法上实现侦听器?比如说日期和时间对话框@当您在xml中定义onClick属性时,MishaleAndroid会为您这样做。@当您在xml中定义onClick属性时,gumuruh Android会为您这样做:Android:onClick=“onClick”,然后在Java中定义上述方法。如果您需要一个自定义侦听器,那么您必须自己定义一个。更多细节在这个问题中
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