【问题标题】:Android: How to use if statement for bundle/intent values?Android:如何将 if 语句用于捆绑/意图值?
【发布时间】:2016-01-10 22:30:02
【问题描述】:

这是一个快速的问题。在我的应用程序中,用户经历了多个活动,这些活动为他们提供了可供选择的单选按钮......在最后的活动中,根据那里的选项,将显示他们是哪个角色等等......现在问题是我不知道'不知道如何编写代码才能做到这一点。这是我所拥有的

第一个活动

public class Quiz1 extends Activity {

Button btn;
RadioGroup rg1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.quiz1);

    btn = (Button) findViewById(R.id.nextBtn1);
    rg1= (RadioGroup) findViewById(R.id.rg1);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            if (rg1.getCheckedRadioButtonId() == -1) {

                Toast.makeText(getApplicationContext(), "Please select an answer",
                        Toast.LENGTH_SHORT).show();
            } else{
                Intent intent = new Intent(getApplicationContext(), Quiz2.class);
                Bundle bundle = getIntent().getExtras();

                int id = rg1.getCheckedRadioButtonId();
                RadioButton radioButton = (RadioButton) findViewById(id);
                bundle.putString("rg1", radioButton.getText().toString());
                intent.putExtras(bundle);
                startActivity(intent);

            }

        }

    });
  }
}

第二次活动

Button btn;
RadioGroup rg2;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.quiz2);


    btn = (Button) findViewById(R.id.nextBtn2);
    rg2= (RadioGroup) findViewById(R.id.rg2);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            if (rg2.getCheckedRadioButtonId() == -1) {

                Toast.makeText(getApplicationContext(), "Please select an answer",
                        Toast.LENGTH_SHORT).show();
            } else{
                Intent intent = new Intent(getApplicationContext(), Quiz3.class);
                Bundle bundle = getIntent().getExtras();
                int id = rg2.getCheckedRadioButtonId();
                RadioButton radioButton = (RadioButton) findViewById(id);
                bundle.putString("rg2", radioButton.getText().toString());
                intent.putExtras(bundle);
                startActivity(intent);

            }

        }

    });
  }
}

这持续了大约 7 个活动

最终活动(显示结果和角色)

public class Final1 extends Activity {

Button btnRestart;
Button btnShare;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.final1);

    Bundle bundle = getIntent().getExtras();

    TextView textView = (TextView)findViewById(R.id.txt);
    textView.setText(bundle.getCharSequence("rg"));

    TextView textView1 = (TextView)findViewById(R.id.txt1);
    textView1.setText(bundle.getCharSequence("rg1"));

    TextView textView2 = (TextView)findViewById(R.id.txt2);
    textView2.setText(bundle.getCharSequence("rg2"));

    TextView textView3 = (TextView)findViewById(R.id.txt3);
    textView3.setText(bundle.getCharSequence("rg3"));

    TextView textView4 = (TextView)findViewById(R.id.txt4);
    textView4.setText(bundle.getCharSequence("rg4"));

    TextView textView5 = (TextView)findViewById(R.id.txt5);
    textView5.setText(bundle.getCharSequence("rg5"));

    TextView textView6 = (TextView)findViewById(R.id.txt6);
    textView6.setText(bundle.getCharSequence("rg6"));

    btnRestart = (Button)findViewById(R.id.restartBtn);

    btnRestart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent in = new Intent(v.getContext(), Quiz.class);
            startActivityForResult(in, 0);
        }
    });

    btnShare = (Button)findViewById(R.id.btnShare);

    btnShare.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.setType("text/plain");
            String shareBody = "check out this app";
            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            startActivity(Intent.createChooser(sharingIntent, "Share via"));


        }
    });


  }

}

现在,在最后的活动中,我想要一个代码,例如:

如果在 activity1(Quiz1) 中选择了 1 或 2 选项(如在选择的单选按钮中),

测验 2:选项 2 或 4

测验 3:选项 1 或 4

测验 2:选项 2 或 3

等等……

然后将文本视图更改为特定的内容,例如“你的角色是 x”

我已经把所有的信息带到了最后一堂课,我只是不知道如何解决这个问题,尽管听起来很简单。

任何帮助将不胜感激,谢谢

编辑:

TextView textviewResult = (TextView) findViewById(R.id.textViewResult);
    if(bundle.getString("rg").equals("A")||(bundle.getString("rg").equals("B")&& bundle.getString("rg1").equals("B")&& bundle.getString("rg2").equals("Long range weapons")
            && bundle.getString("rg3").equals("C") || bundle.getString("rg3").equals("D") && bundle.getString("rg4").equals("A")||bundle.getString("rg4").equals("B")
            || bundle.getString("rg4").equals("CC") && bundle.getString("rg5").equals("A") || bundle.getString("rg5").equals("E")
            && bundle.getString("rg6").equals("Yes"))) {
        textviewResult.setText("x");

    }else{
        textviewResult.setText("not x");
    }

这个问题是,即使我为 rg 选择了另一个选项(所以不是“A”或“B”选项),但是对于其余部分,我选择了 If 语句中的选项,它仍然会说x(但应该说不是 x)

【问题讨论】:

    标签: java android if-statement android-intent android-studio


    【解决方案1】:

    您可以在 if 语句中使用 String equals() 方法。如果两个字符串相等,则返回 true。

    例如:

    if(bundle.getString("rg").equals("YourRadioButtonText")){ ... }

    您的代码可能如下所示:

        `public class Final1 extends Activity {
    
    Button btnRestart;
    Button btnShare;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.final1);
    
        Bundle bundle = getIntent().getExtras();
    
        TextView textView = (TextView)findViewById(R.id.txt);
        textView.setText(bundle.getCharSequence("rg"));
    
        TextView textView1 = (TextView)findViewById(R.id.txt1);
        textView1.setText(bundle.getCharSequence("rg1"));
    
        TextView textView2 = (TextView)findViewById(R.id.txt2);
        textView2.setText(bundle.getCharSequence("rg2"));
    
        TextView textView3 = (TextView)findViewById(R.id.txt3);
        textView3.setText(bundle.getCharSequence("rg3"));
    
        TextView textView4 = (TextView)findViewById(R.id.txt4);
        textView4.setText(bundle.getCharSequence("rg4"));
    
        TextView textView5 = (TextView)findViewById(R.id.txt5);
        textView5.setText(bundle.getCharSequence("rg5"));
    
        TextView textView6 = (TextView)findViewById(R.id.txt6);
        textView6.setText(bundle.getCharSequence("rg6"));
    
        // NEW
    
    TextView textviewResult = (TextView) findViewById(R.id.resultTV);
    if(bundle.getString("rg").equals("C")){
            textviewResult.setText("It is C");
    }
    else if(bundle.getString("rg1").equals("A") || bundle.getString("rg2").equals("B")){
            textviewResult.setText("It is A or B");
    }
    else if(bundle.getString("rg1").equals("C") && bundle.getString("rg2").equals("D")){
            textviewResult.setText("It is C and D");
    }
    else if(!bundle.getString("rg1").equals("A")){
            textviewResult.setText("It is not A");
    }
    else {
        textviewResult.setText("Mhhh");
    }
    
    // END
    
    
    
        btnRestart = (Button)findViewById(R.id.restartBtn);
    
        btnRestart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent in = new Intent(v.getContext(), Quiz.class);
                startActivityForResult(in, 0);
            }
        });
    
        btnShare = (Button)findViewById(R.id.btnShare);
    
        btnShare.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                String shareBody = "check out this app";
                sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
                startActivity(Intent.createChooser(sharingIntent, "Share via"));
    
    
            }
        });
    
    
      }
    
    }`
    

    【讨论】:

    • 效果很好,只有一个问题。如果我想说 rg1 是“A”还是“B”,rg2 是“B”还是“C”等等。然后这样做:..
    • 我把它加到了上面原帖的末尾^
    • 您可以使用逻辑或运算符 || 进行检查。例如: if(bundle.getString("rg1").equals("A") || bundle.getString("rg1").equals("B")){ textviewResult.setText("It is A or B") ; } 只需将“...”中的文本更改为您的要求。
    • 是的,但是如果我还想说如果 rg2 是 A 或 B 并且 rg3 是 C 或 D 并且 rg4 是...但是在相同的 if 语句中(我添加到底部的代码原始帖子的内容是我尝试过的,但它没有用)
    • 你可以使用这个 sn-p: if((bundle.getString("rg1").equals("A") || bundle.getString("rg1").equals("B) ")) && (bundle.getString("rg2").equals("B") || (bundle.getString("rg1").equals("C")) || (...)) 它会检查首先是括号内的内容。然后它检查逻辑和运算符 &&。
    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多