Добавление кнопки отмены в CustomAlertDialog - PullRequest
0 голосов
/ 28 июля 2011

Я просто специалист, а не программист, любая помощь / руководство приветствуется.Я пытаюсь добавить кнопку Отмена к этому коду:

public class gobuuf extends Activity {
/** Called when the activity is first created. */

class CustomAlertDialog extends AlertDialog {
    public CustomAlertDialog(Context context) {
        super(context);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        boolean ret = super.onKeyDown(keyCode, event);
        finish();
        return ret;
    }

    public void setCancel(int buttonNegative, String string, Object object) {
        // TODO Auto-generated method stub

    }
}

private CustomAlertDialog mDialog;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if (isExistSkin("com.gau.go.launcherex")) {
        startGOLauncher("com.gau.go.launcherex");
        finish();
        return;
    }

    mDialog = new CustomAlertDialog(this);
    mDialog.setTitle(R.string.dialogtitle);
    mDialog.setMessage(getResources().getString(R.string.dialogcontent));
    mDialog.setCancel(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.dialognothanks), null);
    mDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.dialogok),
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            String marketuriString = "market://search?q=pname:com.gau.go.launcherex";
            Intent EMarketintent = new Intent(Intent.ACTION_VIEW, Uri.parse(marketuriString));
            EMarketintent.setPackage("com.android.vending");
            EMarketintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//              Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(marketuriString));     
            try {
                startActivity(EMarketintent);
            } catch (ActivityNotFoundException e) {
                String link = "http://61.145.124.93/soft/3GHeart/com.gau.go.launcherex.apk";
                Uri browserUri = Uri.parse(link);
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, browserUri);
                browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                try {
                    startActivity(browserIntent);
                } catch (ActivityNotFoundException e2) {
                    // TODO: handle exception
                    e2.printStackTrace();
                }
            } catch (Exception e3) {
                // TODO: handle exception
                e3.printStackTrace();
            }
            finish();

        }
    });
    mDialog.show();
}


@Override
protected void onDestroy() {
    super.onDestroy();
    android.os.Process.killProcess(android.os.Process.myPid());
}

private boolean isExistSkin(String packageName) {
    try {
            createPackageContext(packageName,
                    Context.CONTEXT_IGNORE_SECURITY);
        } catch (NameNotFoundException e) {
            return false;
        }
    return true;
}

private void startGOLauncher(String packageName){
    PackageManager packageMgr = this.getPackageManager();
    Intent launchIntent = packageMgr.getLaunchIntentForPackage(packageName);
    if (null != launchIntent){
        try
        {
            this.startActivity(launchIntent);
        }
        catch(ActivityNotFoundException e)
        {

        }
    }
}
}

Я добавил соответствующую строку, но не знаю, что еще сделать: добавить onclicklistener, я знаю, мне нужно какое-то действиезакодировано где-то конец ();или .отменить что-то.Еще раз спасибо за любую помощь.

Должен сказать, я играл с этим битом, который вы видите:

mDialog.setCancel(DialogInterface.BUTTON_NEGATIVE,getResources().getString(R.string.dialognothanks), null);

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Я не уверен, что это именно то, что вы ищете, но вы можете сделать что-то вроде этого ... этот просто закрывает диалог.

.setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }

Для очень хорошего урока по созданию диалогов, я бы рекомендовал использовать: http://developer.android.com/guide/topics/ui/dialogs.html. Это должно быть очень полезно.

0 голосов
/ 01 августа 2011

Я понял, как начать действие, следуя ответу на этой странице: Android: Как запустить действие из диалогового окна с предупреждением

Итак, мой код теперь выглядит так:

mDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.dialognothanks),
            new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent i = new Intent(getBaseContext(), AboutActivityOverview.class);    
                        startActivity(i);
                                }
                        });
0 голосов
/ 01 августа 2011

Теперь он работает и работает так, как я хотел:

1) Я удалил:

public void setCancel(int buttonNegative, String string, Object object) {
    // TODO Auto-generated method stub
}

и

mDialog.setCancel(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.dialognothanks), null);

2) идобавлено:

mDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(R.string.dialognothanks),
            new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                                mDialog.cancel();
                                        finish();
                                }
                        });

непосредственно перед

 mDialog.show();

Trial и Error FTW.Возможно, мне следует изучить Java и Android с нуля, чтобы сэкономить время.

Теперь я должен научиться тому, как сделать так, чтобы кнопка «Отмена» не только заканчивалась ();но и начать другую деятельность.

...