Câu trả lời:
Đó là một hộp thoại cảnh báo đơn giản , Federico đã cung cấp cho bạn một trang web để bạn có thể tra cứu mọi thứ.
Dưới đây là một ví dụ ngắn về cách có thể tạo hộp thoại cảnh báo.
new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Do you really want to whatever?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_SHORT).show();
}})
.setNegativeButton(android.R.string.no, null).show();
Android đi kèm với lớp YesNoPreference được tích hợp sẵn để thực hiện chính xác những gì bạn muốn (hộp thoại xác nhận với các tùy chọn có và không). Xem mã nguồn chính thức tại đây .
Thật không may, nó nằm trong com.android.internal.preference
gói, có nghĩa là nó là một phần của các API riêng tư của Android và bạn không thể truy cập nó từ ứng dụng của mình (các lớp API riêng có thể thay đổi mà không cần thông báo, do đó là lý do tại sao Google không cho phép bạn truy cập chúng).
Giải pháp: chỉ cần tạo lại lớp trong gói ứng dụng của bạn bằng cách sao chép / dán mã nguồn chính thức từ liên kết tôi đã cung cấp. Tôi đã thử điều này và nó hoạt động tốt (không có lý do gì tại sao nó không nên).
Sau đó, bạn có thể thêm nó vào preferences.xml
như bất kỳ Sở thích nào khác. Thí dụ:
<com.example.myapp.YesNoPreference
android:dialogMessage="Are you sure you want to revert all settings to their default values?"
android:key="com.example.myapp.pref_reset_settings_key"
android:summary="Revert all settings to their default values."
android:title="Reset Settings" />
Trông như thế này:
Sử dụng Tùy chọn ý định nếu bạn đang sử dụng màn hình xml tùy chọn hoặc bạn nếu bạn đang sử dụng màn hình tùy chỉnh thì mã sẽ giống như bên dưới
intentClearCookies = getPreferenceManager().createPreferenceScreen(this);
Intent clearcookies = new Intent(PopupPostPref.this, ClearCookies.class);
intentClearCookies.setIntent(clearcookies);
intentClearCookies.setTitle(R.string.ClearCookies);
intentClearCookies.setEnabled(true);
launchPrefCat.addPreference(intentClearCookies);
Và sau đó Tạo lớp hoạt động giống như bên dưới, Là những người khác nhau với cách tiếp cận khác nhau, bạn có thể sử dụng bất kỳ cách tiếp cận nào bạn thích, đây chỉ là một ví dụ.
public class ClearCookies extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
showDialog();
}
/**
* @throws NotFoundException
*/
private void showDialog() throws NotFoundException {
new AlertDialog.Builder(this)
.setTitle(getResources().getString(R.string.ClearCookies))
.setMessage(
getResources().getString(R.string.ClearCookieQuestion))
.setIcon(
getResources().getDrawable(
android.R.drawable.ic_dialog_alert))
.setPositiveButton(
getResources().getString(R.string.PostiveYesButton),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//Do Something Here
}
})
.setNegativeButton(
getResources().getString(R.string.NegativeNoButton),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//Do Something Here
}
}).show();
}}
Như đã nói trước đây, có một số cách làm điều này. Đây là một trong những cách bạn có thể thực hiện nhiệm vụ của mình, hãy chấp nhận câu trả lời nếu bạn cảm thấy rằng bạn đã đạt được điều bạn muốn.