Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查startActivityForResult、override onActivityResult方法中按下的按钮?_Java_Android_Button_Onactivityresult - Fatal编程技术网

Java 如何检查startActivityForResult、override onActivityResult方法中按下的按钮?

Java 如何检查startActivityForResult、override onActivityResult方法中按下的按钮?,java,android,button,onactivityresult,Java,Android,Button,Onactivityresult,我有三个按钮(R.id.1、R.id.2、R.id.3)和三个文本视图(a、b、c)。如何检查在ActivityResult上按下的按钮,以便根据按钮设置文本视图 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case 0: //check which button

我有三个按钮(R.id.1、R.id.2、R.id.3)和三个文本视图(a、b、c)。如何检查在ActivityResult上按下的按钮,以便根据按钮设置文本视图

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode)
    {
        case 0:
           //check which button was pressed
            String b = data.getStringExtra("a");
          //Apply setText(b);
            }
           break;

        case 1:
         //check which button was pressed
            String result1=data.getStringExtra("text");
           // Apply setText(result);
            break;


        case 2:
          // check which button was pressed
            String b2 = data.getStringExtra("a");
           // Apply setText (b2);
            break;
示例:在案例0中,按下了R.id.1,a.setText(b)也会按下。

If R.id.1 was pressed, a.setText()
If R.id.2 was pressed, b.setText()
If R.id.3 was pressed, c.setText()
代码

                Button button1 = (Button) claims.findViewById(R.id.1);
                Button button2 = (Button) claims.findViewById(R.id.2);
                Button button3 = (Button)claims.findViewById(R.id.3);
                a=(TextView)claims.findViewById(R.id.textView1);
                b=(TextView)claims.findViewById(R.id.textView2);
                c=(TextView)claims.findViewById(R.id.textView3);

                button1.setOnClickListener(listener);
                button2.setOnClickListener(listener); 
                button3.setOnClickListener(listener);
                  View.OnClickListener listener = new View.OnClickListener() {
                    public void onClick(View v) {
                        AlertDialogRadio();

                    }
                };


         public void AlertDialogRadio() {
                final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};

                AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
                alt_bld.setTitle("Select Weather");
                alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
                        .OnClickListener() {
                    public void onClick(DialogInterface dialog, int item) {
                        if (item == 0) {
                            Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
                            startActivityForResult(intent, 0);
                        } else if (item == 1) {
                            Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
                            startActivityForResult(intent, 1);
                        } else if (item == 2) {
                            Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
                            startActivityForResult(intent, 2);
                         }
     }
                    dialog.dismiss();

                }
            });
            AlertDialog alert = alt_bld.create();
            alert.show();


        }


          @Override
            public void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch(requestCode)
            {
                case 0:
                   //check which button was pressed
                    String b = data.getStringExtra("a");
                  //Apply setText(b);
                    }
                   break;

                case 1:
                 //check which button was pressed
                    String result1=data.getStringExtra("text");
                   // Apply setText(result);
                    break;


                case 2:
                  // check which button was pressed
                    String b2 = data.getStringExtra("a");
                   // Apply setText (b2);
                    break;
    }
已编辑

  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);
                        startActivityForResult(intent, requestCode);
                    } else if (item == 1) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Petrol.class);
                        startActivityForResult(intent, requestCode);
                    } else if (item == 2) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), CarMainten.class);
                        startActivityForResult(intent, requestCode);
                    } else if (item == 3) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Medical.class);
                        startActivityForResult(intent, requestCode);
                    } else if (item == 4) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Other.class);
                        startActivityForResult(intent, requestCode);
                    }

                    dialog.dismiss();

                }
    });
        AlertDialog alert = alt_bld.create();
        alert.show();


    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Toast.makeText(getActivity(), "Not coeted ", Toast.LENGTH_LONG).show();

            switch (requestCode) {
                case requestCode1:
                    String result = data.getStringExtra("text");
                    String b = data.getStringExtra("a");
                    c.setText("            " + b + "------" + "RM " + result);
                    Toast.makeText(getActivity(), "Not completed ", Toast.LENGTH_LONG).show();
                    break;

                case requestCode2:
                    String result1 = data.getStringExtra("text");
                    String b1 = data.getStringExtra("a");
                    c.setText("            " + b1 + "------" + "RM " + result1);
                    break;


                case requestCode3:
                    String result2 = data.getStringExtra("text");
                    String b2 = data.getStringExtra("a");
                    c.setText("            " + b2 + "------" + "RM " + result2);
                    break;

        }


    }

您可以使用请求代码进行检查

         View.OnClickListener listener = new View.OnClickListener() {
            public void onClick(View v) {
                AlertDialogRadio(v.getId());

            }
        };

     public void AlertDialogRadio(int id) {
            final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};

           switch(id){
              case R.id.1:
                 break;
              case R.id.2:
                 break;
              case R.id.3:
                 break;
           }

            Bundle bundle = new Bundle();

            bundle.putString("key", "value");

            AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
            alt_bld.setTitle("Select Weather");
            alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
                    .OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {
                    if (item == 0) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
                        startActivityForResult(intent, 0, bundle);
                    } else if (item == 1) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
                        startActivityForResult(intent, 1, bundle);
                    } else if (item == 2) {
                        Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
                        startActivityForResult(intent, 2, bundle);
                     }
 }
                dialog.dismiss();

            }
        });
        AlertDialog alert = alt_bld.create();
        alert.show();


    }


      @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Bundle bundle = data.getExtras();

        // this can any data that you passed
        String anyData = bundle.getString();
        switch(requestCode)
        {
            case 0:
               //check which button was pressed
                String b = data.getStringExtra("a");
              //Apply setText(b);
                }
               break;

            case 1:
             //check which button was pressed
                String result1=data.getStringExtra("text");
               // Apply setText(result);
                break;


            case 2:
              // check which button was pressed
                String b2 = data.getStringExtra("a");
               // Apply setText (b2);
                break;
}

你能解释一下吗?我应该在哪里添加startActivityForResult(intent,requestCode1);?您应该添加startActivityForResult(intent,requestcode1);单击相应按钮的函数,但三个按钮具有相同的函数,即调用AlertDialogRadio()在AlertDialogRadio中添加变量requestCode检查我编辑的代码您可以在onActivityResult中使用开关,如果我在AlertRadioDialog中添加开关(id),则可以删除我使用的其他按钮,最后,编译器如何知道按下了哪个按钮?请注意代码。AlertDialogRadio(v.getId());使用视图id,您可以检测单击了哪个按钮,但我应该在onActivityResult?编辑的代码中写入什么内容。您可以使用bundle将任何数据传递给onAvtivityResult
int requestCode1 = 1;
int requestCode2 = 2;
int requestCode3 = 3;

Button b1 =(Button) findViewById(R.id.button1);
Button b2 =(Button) findViewById(R.id.button2);
Button b3 =(Button) findViewById(R.id.button3);

b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AlertDialogRadio(requestCode1)

    }
});
b2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AlertDialogRadio(requestCode2)

    }
});
b3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AlertDialogRadio(requestCode3)

    }
});



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == requestCode1){}//button 1
    else if(resultCode == requestCode2){}//button 2
    else if(resultCode == requestCode3){}//button 3

}

public void AlertDialogRadio(final int requestCode) {
    final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};

    AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
    alt_bld.setTitle("Select Weather");
    alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
            .OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            if (item == 0) {
                Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
                startActivityForResult(intent, requestCode);
            } else if (item == 1) {
                Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
                startActivityForResult(intent, requestCode);
            } else if (item == 2) {
                Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
                startActivityForResult(intent, requestCode);
            }
        }
        dialog.dismiss();

    }
});
AlertDialog alert = alt_bld.create();
alert.show();