มีอย่างอื่นที่ควรเรียกอีกไหม?
showDialog(TIME_DIALOG_ID);
อยู่ในบทช่วยสอนนี้แต่บอกว่าเลิกใช้แล้วใน Eclipse
มีอย่างอื่นที่ควรเรียกอีกไหม?
showDialog(TIME_DIALOG_ID);
อยู่ในบทช่วยสอนนี้แต่บอกว่าเลิกใช้แล้วใน Eclipse
คำตอบ:
จากhttp://developer.android.com/reference/android/app/Activity.html
โมฆะสาธารณะสุดท้าย showDialog (int id) เพิ่มใน API ระดับ 1
วิธีนี้เลิกใช้แล้วใน API ระดับ 13 ให้ใช้คลาส DialogFragment ใหม่กับ FragmentManager แทน นอกจากนี้ยังมีให้บริการบนแพลตฟอร์มรุ่นเก่าผ่านแพ็คเกจความเข้ากันได้ของ Android
showDialog (int, Bundle) เวอร์ชันธรรมดาที่ไม่ใช้อาร์กิวเมนต์ใด ๆ เพียงแค่เรียก showDialog (int, Bundle) ด้วยอาร์กิวเมนต์ว่าง
ทำไม
วิธีแก้?
มากกว่า
วิธีนี้เลิกใช้แล้ว
ใช้DialogFragment
คลาสใหม่FragmentManager
แทน; นอกจากนี้ยังมีให้บริการบนแพลตฟอร์มรุ่นเก่าผ่านแพ็คเกจความเข้ากันได้ของ Android
ในการแสดงกล่องโต้ตอบคุณสามารถใช้รหัสต่อไปนี้ นี่คือการแสดงกล่อง AlertDialog แบบธรรมดาที่มีช่องทำเครื่องหมายหลายช่อง:
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 เพื่อแสดงกล่องโต้ตอบที่แตกต่างกันหรืออะไรก็ได้ตามอาร์กิวเมนต์ที่ส่งผ่านคุณสามารถสร้างฟังก์ชันด้วยตนเองและสามารถเรียกใช้ภายใต้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