如何在 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();
背景故事:我正在制作一个非常简单的剪刀石头布应用程序。在应用程序中,您有 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();