Закрыть пользовательский диалог из другой функции

Я пытаюсь изменить макет диалогового окна, а затем выполнить некоторую функцию и закрыть окно предупреждения, поскольку моя функция завершена.

Файл макета

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="120dp"
            android:orientation="horizontal"
            android:layout_below="@+id/header"
            android:paddingTop="15dp"
            android:paddingBottom="15dp">
        <ImageView
            android:id="@+id/cam"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:padding="10dp"
            android:paddingLeft="10dp"
            android:src="@drawable/ic_cam"
            android:layout_alignParentLeft="true"
            android:layout_weight="1"
            android:onClick="camera_listener"
            />

        <ImageView
            android:id="@+id/gal"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:padding="10dp"
            android:paddingLeft="10dp"
            android:src="@drawable/ic_gal"
            android:layout_alignParentLeft="true"
            android:layout_weight="1"
            android:onClick="gallery_listener"
            />
        </LinearLayout>

Java-файл

    AlertDialog.Builder myAlertDialog;    // Variable declared as a class member

    private void startDialog() {

            LayoutInflater inflater = this.getLayoutInflater();
            final View view = inflater.inflate(R.layout.activity_fab, null);
            myAlertDialog = new AlertDialog.Builder(this);
            myAlertDialog.show();
    }

public void gallery_listener(View view) {

        pictureActionIntent = new Intent(Intent.ACTION_PICK, null);
        pictureActionIntent.setType("image/*");
        pictureActionIntent.putExtra("return-data", true);
        startActivityForResult(pictureActionIntent, GALLERY_PICTURE);
        myAlertDialog.setOnDismissListener();
    }

    public void camera_listener(View view) {

        pictureActionIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
        pictureActionIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
        startActivityForResult(pictureActionIntent, CAMERA_REQUEST);
    }

Я показываю два изображения в диалоговом окне и определяю функцию по их щелчку... я хочу закрыть ДИАЛОГ, как только будет выполнена соответствующая функция.

Я пытался использовать отклонить, но это не работает ..!


person Abhilash Kant    schedule 22.09.2015    source источник
comment
какую ошибку вы получаете при использовании myAlertDialog.dismiss?   -  person Blue_Alien    schedule 22.09.2015


Ответы (2)


попробуйте это во втором методе,

в Main.java

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class DialogCustom extends Activity {

    AlertDialog myAlertDialog; 
    ImageView ivOne,ivTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog_custom);

        ivOne=(ImageView)findViewById(R.id.cam);
        ivTwo=(ImageView)findViewById(R.id.gal);
        myAlertDialog = new AlertDialog.Builder(this).create();
        ivOne.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startDialog();
            }
        });

        ivTwo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        dismis();
                    }
                });
            }
        });

    }

    private void startDialog() {
        myAlertDialog.show();
}
    public void dismis()
    {
        myAlertDialog.dismiss();
    }
}

и в файле main.xml.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:layout_below="@+id/header"
    android:orientation="horizontal"
    android:paddingBottom="15dp"
    android:paddingTop="15dp" >

    <ImageView
        android:id="@+id/cam"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_weight="1"
        android:onClick="camera_listener"
        android:padding="10dp"
        android:paddingLeft="10dp"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/gal"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_weight="1"
        android:onClick="gallery_listener"
        android:padding="10dp"
        android:paddingLeft="10dp"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
person Ganpat Kaliya    schedule 22.09.2015
comment
я пытался... он показывает ошибку всякий раз, когда я использую функцию отклонения! - person Abhilash Kant; 22.09.2015
comment
попробуйте мой отредактированный ответ, который показывает и закрывает диалог другим способом - person Ganpat Kaliya; 22.09.2015
comment
Спасибо, это помогло!! - person Abhilash Kant; 23.09.2015
comment
Спасибо за помощь .. я ценю ваши усилия. - person Abhilash Kant; 23.09.2015

Альтернативный вариант, который я нашел... сначала создайте диалоговое окно предупреждения с помощью построителя, затем назначьте его диалоговому окну и используйте функцию отклонения с этим

Обновлять-

private AlertDialog dialog; // Variable with class scope
private void startDialog() {

    LayoutInflater inflater = this.getLayoutInflater();
    final View view = inflater.inflate(R.layout.activity_fab, null);
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setView(view);

    dialog = builder.create();
    dialog.show();
    }

    public void gallery_listener(View view) {

        pictureActionIntent = new Intent(Intent.ACTION_PICK, null);
        pictureActionIntent.setType("image/*");
        pictureActionIntent.putExtra("return-data", true);
        startActivityForResult(pictureActionIntent, GALLERY_PICTURE);
        dialog.dismiss();
    }

Это сработало для меня ... если есть лучший метод, поделитесь, пожалуйста!

person Abhilash Kant    schedule 23.09.2015