【问题标题】:After an imageButton is clicked, how do I best disable other imageButtons, AND assign a variable with the selected imageButton’s value?单击 imageButton 后,如何最好地禁用其他 imageButtons,并使用所选 imageButton 的值分配一个变量?
【发布时间】:2019-07-19 00:58:36
【问题描述】:

上下文:My Style Activity 对应于具有 4 个 imageButtons 和一个常规按钮的布局。我希望用户一次只能选择一个 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 );
}

}

【问题讨论】:

    标签: java android onclicklistener imagebutton


    【解决方案1】:

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

    }

    This link might help.

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      相关资源
      最近更新 更多