如何在 android 工作室中有效地显示正确的弹出窗口 window

how to efficiently display the correct pop up window in android studio

背景故事:我正在制作一个非常简单的剪刀石头布应用程序。在应用程序中,您有 3 个按钮 select 石头、布或剪刀。

当你 select 石头时,我有一个弹出窗口显示 "Computer plays paper you lose"

问题是这个弹出消息需要是动态的。

我的目标是让计算机随机 select 一步棋并确定游戏结果并显示在弹出窗口中。因此,例如,如果我选择摇滚,而计算机选择剪刀,弹出窗口将生成消息 "Computer selects scissors you win!" 这对你们所有人来说可能是非常基础的,但我仍然熟悉 android 开发和 android 工作室.

是否可以只有一个 popupwindow.xml 文件并传递值来显示正确的消息?喜欢"Computer plays 'computermov' you 'result'!"

我该如何实施?下面是 page2.java,它只有一个按钮被编程为调用弹出窗口。我需要让它适用于所有三个按钮。我还包括 popupwindow.xml 和 Pop.java,我制作的 class 调用了弹出窗口。

popupwindow.xml

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Computer played Paper you lose!"
    android:id="@+id/textView"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

page2.java

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

ImageButton btn = (ImageButton) findViewById(R.id.imageButtonRock);
    //btn is set to the rock image needs to be dynamic
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        startActivity(new Intent(page2.this, Pop.class));
    }
});
}

Pop.java

public class Pop extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.popupwindow);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;
    int height = dm.heightPixels;

    getWindow().setLayout((int)(width*.8),(int)(height*.4));
}

所以我的想法是,在 popupwindow.xml 中,我可以硬编码计算机的所有可能结果 selection 和游戏结果,并在运行时按 id 显示正确的弹出窗口。似乎是错误的方法,但我认为这可行吗?

执行此操作的更有效方法是什么?提前致谢!

听起来您可能想使用 AlertDialog,例如

String  computerSelected = ...;
boolean computerWon = ...;
new AlertDialog.Builder(context)
    .setMessage("Computer selected " + computerSelected + ". You " + (computerWon ? "loose" : " win"))
    .show();