为什么我的位图图像出现在警报对话框的后面?

Why does my bitmap image appears behind the alertdialog?

代码:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    image_person = (ImageView) findViewById(R.id.dialog_imageview);
}

public void checkBox_checker(String checkerID, String checkerName, String checkerSurname, String 
checkerDescription, Blob picture) throws SQLException 
{
    int blobLength = (int) picture.length();
    byte[] bytes = picture.getBytes(1,blobLength);

    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

    Log.d(TAG, "Checker box");

    LayoutInflater factory = LayoutInflater.from(MainActivity.this);

    final View alertDialog= factory.inflate(R.layout.sample, null);
    image_person.setImageBitmap(bitmap);

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    builder.setCancelable(true);
    builder.setView(alertDialog);
    builder.setTitle("Information");
    builder.setMessage(message);


    builder.setNegativeButton("Report", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {

        }
    });

    builder.setPositiveButton("Enter", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            
        }
    });
    builder.show();
}

Sample.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">


<ImageView
    android:id="@+id/dialog_imageview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</RelativeLayout>

我的问题是图像被插入到警告对话框的后面而不是警告对话框内。有人可以帮我解释为什么会这样吗?

我在 xml 文件中输入了图像,它确实显示在警告对话框中。所以不太清楚为什么会这样。

看起来您在布局 activity_main 中有一个名为 dialog_imageview 的单独 ImageView。否则,activity 将无法在此处找到视图:

image_person = (ImageView) findViewById(R.id.dialog_imageview);

这将导致下面几行的空指针异常:

image_person.setImageBitmap(bitmap);

要解决所有这些问题,请从 activity_main XML 布局中删除 dialog_imageview

然后,通过调用 findViewById 在膨胀的 sample 布局中找到正确的 ImageView,而不是在 activity 中:

final View alertDialog = factory.inflate(R.layout.sample, null);
image_person = (ImageView) alertDialog.findViewById(R.id.dialog_imageview);
image_person.setImageBitmap(bitmap);

您不能在膨胀其布局之前执行“findViewById()”... 我认为您的 MainActivity 布局中有一个“dialog_imageview”,然后图像在错误的 ImageView 中更新。

你只需要移动“image_person = (ImageView)alertDialog.findViewById(R.id.dialog_imageview);”在“factory.inflate(R.layout.sample, null);”之后行。

首先,正如 Hoffman 正确指出的那样,我确实在 activty_man.xml 中复制了 ImageView。

但是,问题依然存在。

经过大量调查,我意识到我漏掉了一行代码,

之前:

image_person = (ImageView) findViewById(R.id.dialog_imageview);

After/Correction:

image_person = (ImageView) alertDialog.findViewById(R.id.dialog_imageview);