【问题标题】:Using putExtra on a checkbox, but cannot go to the next Activity在复选框上使用 putExtra,但无法转到下一个活动
【发布时间】:2018-11-02 20:20:59
【问题描述】:

我想从第一个活动中输入我自己的分数,并且我正在使用复选框方法。通过选择该复选框,他们有自己的分数,即 1。选中该复选框并按下按钮后,它将转到包含该分数 1 的下一个活动。然后第二个活动中的过程与第一个活动相同,但唯一不同的是分数必须增加 1。我将在下面的第一个活动中展示我的工作:

public class AfterNoYesQ1Activity extends AppCompatActivity {

Button buttonNext;

TextView textViewClickHere;




int score = 1;


CheckBox check1,check2,check3,check4,check5,check6,check7;

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

    check1 = (CheckBox)findViewById(R.id.checkBox1);
    check2 = (CheckBox)findViewById(R.id.checkBox2);
    check3 = (CheckBox)findViewById(R.id.checkBox3);
    check4 = (CheckBox)findViewById(R.id.checkBox4);
    check5 = (CheckBox)findViewById(R.id.checkBox5);
    check6 = (CheckBox)findViewById(R.id.checkBox6);
    check7 = (CheckBox)findViewById(R.id.checkBox7);


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

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



            Intent intent = new Intent(AfterNoYesQ1Activity.this, DetectionQues2Activity.class);
            startActivity(intent);



        }
    });


    textViewClickHere = (TextView) findViewById(R.id.textViewClickHere);

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

            Intent intent = new Intent(AfterNoYesQ1Activity.this, DetectionQues2Activity.class);
            startActivity(intent);




        }
    });


}

public void checkone (View view)

{

    if (check1.isChecked() && check5.isChecked() && check6.isChecked())
    {


        getIntent().putExtra("score",score);


    }
    else if (check1.isChecked() && check5.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check1.isChecked() && check6.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check2.isChecked() && check5.isChecked() && check6.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check2.isChecked() && check5.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check2.isChecked() && check6.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check3.isChecked() && check5.isChecked() && check6.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check3.isChecked() && check5.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check3.isChecked() && check6.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check3.isChecked() && check5.isChecked() && check6.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check3.isChecked() && check5.isChecked() && check7.isChecked())
    {
        //fail
        getIntent().putExtra("score",score);

    }
    else if (check1.isChecked() && check5.isChecked() && check6.isChecked())
    {

    }
    else if (check3.isChecked() && check6.isChecked() && check7.isChecked())
    {
        //fail

    }
    else if (check1.isChecked() && check2.isChecked() && check5.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check6.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check7.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked() && check5.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked() && check6.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked() && check7.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked()
            && check4.isChecked() && check5.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked()
            && check4.isChecked() && check6.isChecked())
    {
        //pass

    }
    else if (check1.isChecked() && check2.isChecked() && check3.isChecked()
            && check4.isChecked() && check7.isChecked())
    {
        //pass

    }



    score = score + 1;

}

}

【问题讨论】:

  • 你在哪里调用 checkone() 方法?
  • 这个你知道你可以putExtra信息到intents并从传入的intents中getExtra吗?
  • 我确实知道 putExtra 信息并使用按钮进入下一个活动。但我无法弄清楚如何将Extra 用于复选框,否则我不能使用checkone 方法?
  • 尝试让您的 chackone() 方法返回 Boolean 值,您将在其中决定通过和失败,并根据 checkone() 方法中的值执行 putExtra() 其中您正在将您的意图传递给下一个 Activity。

标签: android android-studio checkbox rules


【解决方案1】:

如果我理解正确,您想将复选框修改的当前分数从 AfterNoYesQ1Activity 传递给 DetectionQues2Activity?

如果是这种情况,不要在 checkone 中使用 getIntent().putExtra,而是将你的 textViewClickHere.onClickListener 修改为:

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

        Intent intent = new Intent(AfterNoYesQ1Activity.this, DetectionQues2Activity.class);
        intent.putExtra("score", score);
        startActivity(intent);
    }
});

getIntent().putExtra 只是简单的获取和修改当前activity的Intent(AfterNoYesQ1Activity),不会传递给下一个activity。

如果我没有抓住重点,请重新表述你的问题,因为它非常难以解读。

【讨论】:

  • 是正确的.. 但是如果我在我的 textViewClickHere.onClickListener 上放置 intent.putExtra ("score",score) ,它也会在复选框上传递该分数吗?因为我很困惑如何正确传递数据(分数),因为如果选中复选框 1、2、3,他们将获得 1 分,而我想将 1 分传递给下一个活动。
【解决方案2】:

根据documentation

getIntent()返回启动此活动的意图。

我认为你必须有一个 score 实例作为你的活动的属性。您的方法checkone() 可以增加您的分数,当您单击下一个按钮时,您必须将分数作为额外的意图传递。正如@wabbawabbe 所示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多