【问题标题】:Pass bundle to if-statement将 bundle 传递给 if 语句
【发布时间】:2015-10-29 03:50:57
【问题描述】:

Activity Claims---->有2个button和一个textView(获取总量)

Activity Project1 和 Petrol----> 一个 editText 和一个保存 button

活动声明

 button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialogRadio(a1);

            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialogRadio(a2);

            }
        });

 public void AlertDialogRadio(final int k) {
         final CharSequence[] ClaimsModel = {"Project1", "Petrol"};

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
        alt_bld.setTitle("Select a Claims");
        alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
                .OnClickListener() {

            public void onClick(DialogInterface dialog, int item) {
                if (item == 0) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Project1.class);
                   intent.putExtra("k",k); 
                    startActivityForResult(intent, 0);
                } else if (item == 1) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), Petrol.class);
                   intent.putExtra("k", k);
                    startActivityForResult(intent, 1);
                }

** Project1 或 Petrol,取决于...)**

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.project);
       text= (EditText)findViewById(R.id.editText1);
        Button save=(Button)findViewById(R.id.button12);

        save.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                Intent returnIntent = new Intent();
                l="A";
                text = text.getText().toString();
                returnIntent.putExtra("text", text);
                returnIntent.putExtra("l", l);
                final int k1 = getIntent().getExtras().getInt("k");
                returnIntent.putExtra("k1", k1);
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });

    }

    @Override
    public void onBackPressed()
    {
        Intent returnIntent = new Intent();
        setResult(Activity.RESULT_CANCELED, returnIntent);
        finish();
    }

是否可以将bundle 传递给if statement?我想将一个值传递给另一个案例,最后将这两个值相加。我怎样才能做到这一点?现在我只得到asbs 的值,而不是amount 的值。我确实认为需要在if statement 中添加一个bundle...

继续 Claims.java....

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
            int button = data.getIntExtra("k1", 0);  // to check which button was pressed
            long a=0;
            long as=0;
            long bs=0;
            String result;
            String result1;

            if (button == 1) {
                switch (requestCode) {
                    case 0:
                        result = data.getStringExtra("text");
                        String b = data.getStringExtra("l");
                         as=Long.parseLong(result);
                        c.setText("            " + b + "------" + "RM " + result);
                        Toast.makeText(getActivity(),as+"", Toast.LENGTH_LONG).show();
                        break;

                    case 1:
                         result = data.getStringExtra("text");
                        String b1 = data.getStringExtra("l");
                         as=Long.parseLong(result);
                        c.setText("            " + b1 + "------" + "RM " + result);
                        Toast.makeText(getActivity(),as+"", Toast.LENGTH_LONG).show();
                        break;


            }
             if(button==2)
            {
                switch (requestCode) {
                    case 0:
                        result1 = data.getStringExtra("text");
                        String b = data.getStringExtra("l");
                         bs=Long.parseLong(result1);
                        d.setText("            " + b + "------" + "RM " + result1);
                        Toast.makeText(getActivity(),bs+"", Toast.LENGTH_LONG).show();
                        break;

                    case 1:
                        result1 = data.getStringExtra("text");
                        String b1 = data.getStringExtra("l");
                         bs=Long.parseLong(result1);
                        d.setText("            " + b1 + "------" + "RM " + result1);
                        Toast.makeText(getActivity(),bs+"", Toast.LENGTH_LONG).show();
                        break;

                }

            }

      else if(requestCode==CAMERA_REQUEST_CODE)
            {

            }

            long amount=as+bs;
            Toast.makeText(getActivity(),amount+"", Toast.LENGTH_LONG).show();

我参考了How can i pass a string value, that has been created in an if statement, through a bundle inside another if statement?,但答案对我来说还不清楚。

索赔图片

toast 应该显示 1 12 13,但我得到 1 12 12。 似乎无法添加值 1

【问题讨论】:

  • 所有评论都不见了....
  • 现在有什么不清楚的地方?请告诉我。我会解释再解释:(
  • 根据您的onActivityResult 代码,如果您获得as 的值,那么您一次只能获得一个值,那么bs 将为0,反之亦然,那么您为什么要这样做amount = as+bs你想要这两个值吗?
  • 你的代码太多余了,你的问题不清楚,我们在这里帮不了你,你必须遇到一个面对面的人并告诉他
  • ya..我想得到金额as+bs

标签: java android if-statement bundle onactivityresult


【解决方案1】:

您应该将在 onActivityResult 中传递的值存储在 Activity 的变量中,然后直接为 Toast 读取这些变量。

public class Claims{
    long a, as, bs;

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        int button = data.getIntExtra("k1", 0);
        String result;

        if (button == 1) {
            result = data.getStringExtra("text");
            as=Long.parseLong(result);
        } else if(button==2) {
            result = data.getStringExtra("text");
            bs=Long.parseLong(result1);
        }

        long amount=as+bs;
        Toast.makeText(getActivity(),amount+"", Toast.LENGTH_LONG).show();
    }
}

您仍然需要根据您的标准初始化您的值。

【讨论】:

  • 所以我只是将 a,as,bs 移动到全局而不是像我想要的那样工作吗?
  • 我仍然不确定您到底想要什么,但我会这样处理。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多