【问题标题】:Android If conditionAndroid If 条件
【发布时间】:2013-05-11 19:03:53
【问题描述】:

在一个 android 应用程序中,我单击一个标志设置为 1 的按钮,然后我检查它是否设置为 1 来执行某些操作。但它不起作用!

public class MainActivity extends Activity {
    Button button1;
    TextView text1;
    int flag=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);;
        text1 =(TextView) findViewById(R.id.text1);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                flag = 1;
            }
        });


    if(flag == 1 ){
        text1.setText("Manoj Kumar S");

    }
}

这个逻辑似乎行不通!为什么?

【问题讨论】:

  • 你能放更多的代码,看看buttonFlag是一个属性还是一个局部变量,你什么时候做你的if条件......
  • 如果您单击按钮,为什么要检查它是否被单击?你有 OnClickListener.. 这为你做的工作.. 只需在 onClick 方法中编写你想要做的代码
  • 逻辑很简单。我有一个按钮,我单击我想要 int buttonFlag = 0,将更改设置为 buttonFlag =1(这个更改,我使用 toast 进行了检查)。现在我想检查 if(buttonFlag == 1),我想在 TextView 上显示一个文本。这没有发生!!!
  • 贴出原代码
  • @blackbelt 更新了细节...

标签: android button onclick onclicklistener


【解决方案1】:

可能你想要这样的东西

public class MainActivity extends Activity {
Button button1;
TextView text1;
int flag=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);;
    text1 =(TextView) findViewById(R.id.text1);
    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            flag = 1;
            updateTextView();
        }
    });
}

 private void updateTextView() {
   if(flag == 1 ){
    text1.setText("Manoj Kumar S");
   }

 }

}

【讨论】:

    【解决方案2】:

    只需移动onClick里面的行

    public class MainActivity extends Activity {
    Button button1;
    TextView text1;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);;
        text1 =(TextView) findViewById(R.id.text1);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                text1.setText("Manoj Kumar S");
            }
        });
    

    }

    【讨论】:

      【解决方案3】:

      在 Java 中,所有可执行代码都必须在方法中。

      if(flag == 1 ){
      
          text1.setText("Manoj Kumar S");
      
      }
      

      此代码不在方法中,永远不会运行。将其移入方法中,也许正如 Blackbelt 所展示的那样。

      【讨论】:

        【解决方案4】:

        我也认为逻辑不正确,因为按钮是事件驱动的,如 A--C 所述。尝试一些不同的东西..

        int flag=0;
        button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v)
            {
                      flag=1;
                      test();
            }
        });
        private void test()
        {
            if(flag==1)
                text1.setText("Do your stuff..");
        }
        

        【讨论】:

        • 谢谢,如果您认为它解决了您的问题,请将其标记为答案,以便它可以帮助那些将面临同样问题的人..:)
        猜你喜欢
        • 2016-03-17
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 2020-08-20
        • 2021-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多