【问题标题】:How can I make a button invisible if and only if its activity intented from another activity?当且仅当按钮的活动来自另一个活动时,我如何才能使按钮不可见?
【发布时间】:2019-01-09 16:53:10
【问题描述】:

如果某个按钮的意图是某个按钮,我想禁用 Activity 中的按钮,否则如果它是来自其他类的意图,则启用该按钮。阅读代码后我的意思会很清楚。

这是意图包含按钮的类的函数。

showperson.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                falses=true;
                ob.truth=false;
                Toast.makeText(home_page.this, "doneit"+ob.truth, Toast.LENGTH_SHORT).show();
//                Button clik=fb.getButton();
//                clik.setVisibility(View.GONE);
                 Intent to=new Intent(home_page.this,Form.class);
                to.putExtra("buttonclik",false);
                startActivity(to);


            }
        });

【问题讨论】:

  • 在下一个活动中设置按钮的 onClick 检查意图并在需要时禁用它这里有什么问题?
  • 不看这段代码不清楚。

标签: android android-studio android-intent android-activity


【解决方案1】:

尝试在onCreate()中添加这个:

Intent intent = getIntent();
if (intent != null) {
    boolean isButtonClicked = intent.getBooleanExtra("buttonclik", false);
    if (isButtonClicked) {
        showperson.setEnabled(false);
    }
}

并将false 更改为true to.putExtra("buttonclik",false);

【讨论】:

    【解决方案2】:

    您可以通过在调用者活动中设置一个标志来实现这一点。请参考以下示例。

    public class ActivityA extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_a);
            Intent intent = new Intent(this, ActivityThatContainsTheButton.class);
            intent.putExtra("activity", "activityA");
            startActivity(intent);
        }
    }
    
    public class ActivityB extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_b);
            Intent intent = new Intent(this, ActivityThatContainsTheButton.class);
            intent.putExtra("activity", "activityB");
            startActivity(intent);
        }
    }
    
    public class ActivityThatContainsTheButton extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_x);
            Button button = findViewById(R.id.button);
            String from = getIntent().getStringExtra("activity");
            if (from != null) {
                if (from.equals("activityA")) {
                    button.setVisibility(View.VISIBLE);
                } else if (from.equals("activityB")) {
                    button.setVisibility(View.INVISIBLE);
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 2012-02-12
      • 2021-03-14
      • 2019-06-22
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      相关资源
      最近更新 更多