java - 单击 imageButton 后,如何最好地禁用其他 imageButton,并为变量分配所选 imageButton 的值?
问题描述
上下文:我的样式活动对应于具有 4 个图像按钮和一个常规按钮的布局。我希望用户一次只能选择一个 imageButton。单击常规按钮后,我想将有关选择哪个 imageButton 的数据发送到我的 ReviewActivity,同时打开我的 ReflectionActivity。
我有 2 个问题。首先,我如何干掉围绕 OnClick 和禁用的 imageButtons 的代码?其次,如何根据选择的 imageButton 设置变量并将其发送到具有意图的另一个活动?我相当确定我已经以漫长/艰难的方式做到了这一点。非常感谢所有建议!
公共类 StyleActivity 扩展 AppCompatActivity {
Button btn_open_reflection;
ImageButton style1;
ImageButton style2;
ImageButton style3;
ImageButton style4;
public static final String style_selection = "com.example.application.hearttoart.style_selection";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_style );
// set up image buttons for the onClick function
style1 = (ImageButton)findViewById(R.id.style1);
style2 = (ImageButton)findViewById(R.id.style2);
style3 = (ImageButton)findViewById(R.id.style3);
style4 = (ImageButton)findViewById(R.id.style4);
// TODO: DRY up when possible, lots of repeated code here
style1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
style2.setEnabled(false);
style3.setEnabled(false);
style4.setEnabled(false);
String style_selection = "@string/style1";
}
});
style2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
style1.setEnabled(false);
style3.setEnabled(false);
style4.setEnabled(false);
String style_selection = "@string/style2";
}
});
style3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
style1.setEnabled(false);
style2.setEnabled(false);
style4.setEnabled(false);
String style_selection = "@string/style3";
}
});
style4.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
style1.setEnabled(false);
style2.setEnabled(false);
style3.setEnabled(false);
String style_selection = "@string/style4";
}
});
btn_open_reflection =(Button) findViewById(R.id.btn_open_style);
btn_open_reflection.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View view){
// Open Style Activity - Navigate to Activity from the Click
openReflection();
sendStyle();
}
});
}
public void sendStyle() {
Intent styleIntent = new Intent(StyleActivity.this, ReviewActivity.class );
styleIntent.putExtra("style", style_selection);
}
public void openReflection() {
Intent intent = new Intent( this, ReflectionActivity.class );
startActivity( intent );
}
}
解决方案
公共类 MainActivity 扩展 AppCompatActivity 实现 View.OnClickListener {
Button btn_open_reflection;
ImageButton style1;
ImageButton style2;
ImageButton style3;
ImageButton style4;
String style_selection = "com.example.application.hearttoart.style_selection";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// set up image buttons for the onClick function
style1 = (ImageButton)findViewById(R.id.style1);
style2 = (ImageButton)findViewById(R.id.style2);
style3 = (ImageButton)findViewById(R.id.style3);
style4 = (ImageButton)findViewById(R.id.style4);
btn_open_reflection =(Button) findViewById(R.id.btn_open_style);
btn_open_reflection.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View view){
// Open Style Activity - Navigate to Activity from the Click
openReflection();
}
});
}
public void openReflection() {
Intent intent = new Intent( MainActivity.this, OtherActivity.class );
intent.putExtra("style", style_selection);
startActivity(intent);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.style1:
//disable other buttons
style2.setEnabled(false);
style3.setEnabled(false);
style4.setEnabled(false);
style_selection = "@string/style1";
break;
case R.id.style2:
style1.setEnabled(false);
style3.setEnabled(false);
style4.setEnabled(false);
style_selection = "@string/style2";
break;
case R.id.style3:
style1.setEnabled(false);
style2.setEnabled(false);
style4.setEnabled(false);
style_selection = "@string/style4";
break;
case R.id.style4:
style1.setEnabled(false);
style2.setEnabled(false);
style3.setEnabled(false);
style_selection = "@string/style4";
break;
}
}
}
推荐阅读
- python - “user_id”列中的 Django REST POST 空值违反非空约束
- hybris - SAP Hybris 1905 - 更新 OOTB“关系”
- javascript - 如何声明一个promise变量,以便在promise得到解决之前我可以在任何地方使用它
- java - 无法在 Thymeleaf/Spring Boot 应用程序中显示图像
- gatsby - 使用 @reach/router 和 Gatsby 时是否可以传递我自己的道具?
- php - 如何从 json_decode 中获取特定值?
- java - 如何模拟 ByteArrayOutputStream 的异常
- python - 有没有办法在 h5py 中一次获取所有组中的数据集?
- postgresql - Postgresql/psql 重建转储表失败
- c# - 从用户上下文应用程序(C#、控制台应用程序)访问系统应用程序数据