Ввод представления галереи в диалоге - PullRequest
0 голосов
/ 20 марта 2011

Как бы я поместил GalleryView в диалог оповещения. Я пробовал несколько способов, но ни один из них не работал, и все они вызвали ошибки. Большое спасибо за

Это то, что я пробовал

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
case NEWPIC_DIALOG:
            LayoutInflater lo = LayoutInflater.from(this);
            View picDetailView = lo.inflate(R.layout.newpicdialog, null);

            AlertDialog.Builder picDetailBuilder = new AlertDialog.Builder(this);

            Gallery g = (Gallery) findViewById(R.id.NewPicDialogGallery);
            g.setAdapter(new ImageAdapter(DragActivity.this));

            g.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView parent, View v, int position, long id) {
                    Toast.makeText(DragActivity.this, "" + position, Toast.LENGTH_SHORT).show();
                }
            });


            picDetailBuilder.setTitle("New Picture");
            picDetailBuilder.setView(picDetailView);
            AlertDialog picDetail = picDetailBuilder.create();

            return picDetail;
        default:
            break;   
    }
    return null;
} 

1 Ответ

1 голос
/ 24 декабря 2011

Вы также должны переопределить функцию onPrepareDialog. Попробуйте следующее:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case NEWPIC_DIALOG:
            LayoutInflater lo = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            View picDetailView = lo.inflate(R.layout.newpicdialog,(Gallery) findViewById(R.id.NewPicDialogGallery);

            AlertDialog.Builder picDetailBuilder = new AlertDialog.Builder(this);

            picDetailBuilder.setTitle("New Picture");
            picDetailBuilder.setView(picDetailView);
            AlertDialog picDetail = picDetailBuilder.create();

            return picDetail;
        default:
            break;   
    }
    return null;
}

    @Override
    protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
        switch (id) {
        case NEWPIC_DIALOG:
            Gallery g = (Gallery) dialog.findViewById(R.id.NewPicDialogGallery);
            g.setAdapter(new ImageAdapter(dialog.getContext()));

            g.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView parent, View v, int position, long  id) {
                  Toast.makeText(DragActivity.this, "" + position, Toast.LENGTH_SHORT).show();
              }
            });
        }
        super.onPrepareDialog(id, dialog, args);
    }
...