Có thứ gì khác nên được gọi không?
showDialog(TIME_DIALOG_ID);
Nó nằm trong hướng dẫn này nhưng nói rằng không được dùng trong Eclipse.
Có thứ gì khác nên được gọi không?
showDialog(TIME_DIALOG_ID);
Nó nằm trong hướng dẫn này nhưng nói rằng không được dùng trong Eclipse.
Câu trả lời:
Từ http://developer.android.com/reference/android/app/Activity.html
public final void showDialog (int id) Đã thêm vào API cấp 1
Phương thức này không được chấp nhận ở cấp API 13. Thay vào đó, hãy sử dụng lớp DialogFragment mới với FragmentManager; điều này cũng có sẵn trên các nền tảng cũ hơn thông qua gói tương thích Android.
Phiên bản đơn giản của showDialog (int, Bundle) không nhận bất kỳ đối số nào. Đơn giản chỉ cần gọi showDialog (int, Bundle) với các đối số rỗng.
Tại sao
Giải quyết thế nào?
Hơn
Phương pháp này không được dùng nữa.
Sử dụngDialogFragment
lớp mới vớiFragmentManager
thay thế; điều này cũng có sẵn trên các nền tảng cũ hơn thông qua gói tương thích Android.
Để hiển thị hộp thoại, bạn có thể sử dụng mã sau. Đây là để hiển thị một hộp AlertDialog đơn giản với nhiều hộp kiểm:
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();
Trong khi nếu bạn đang sử dụng hàm showDialog để hiển thị các hộp thoại khác nhau hoặc bất cứ thứ gì theo các đối số được truyền vào, bạn có thể tạo một hàm self và có thể gọi nó dưới onClickListener()
hàm. Cái gì đó như:
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);
}
});
}
và thêm mã của hộp thoại đã cho ở trên trong định nghĩa hàm.
Mã này làm việc cho tôi. Sửa chữa dễ dàng nhưng có lẽ không phải là cách ưa thích.
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