首页 > 解决方案 > 单击 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 );
}

}

标签: javaandroidonclicklistenerimagebutton

解决方案


公共类 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;
    }
}

}

此链接可能会有所帮助。


推荐阅读