onActivityResult中的requestCode和resultCode是什么引用的?

时间:2015-10-28 03:07:22

标签: java android android-studio radio-button onactivityresult

大家好。我是android的新手,现在在我的程序中使用 startActivityForResult 。在我的应用程序中,我有两个按钮和两个textView。用于打开对话框的两个button。如何检查按下了哪个按钮onActivityResult,以便TextView可以相应地设置为按钮?

  int a1 = 1;
  int a2 = 2;

   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) {  //parameter k is never used
            final CharSequence[] ClaimsModel = {"Project", "Petrol", "Car Maintenance"
                    , "Medical", "Other"};

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

                    dialog.dismiss();

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


    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == 1) { // if button1 was clicked
            switch (requestCode) {
                case 0:
                    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 1:
                    String result1 = data.getStringExtra("text");
                    String b1 = data.getStringExtra("a");
                    c.setText("            " + b1 + "------" + "RM " + result1);
                    break;


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

                case 3:
                    String result3 = data.getStringExtra("text");
                    String b3 = data.getStringExtra("a");
                    c.setText("            " + b3 + "------" + "RM " + result3);
                    break;

                case 4:
                    String result4 = data.getStringExtra("text");
                    String b4 = data.getStringExtra("a");
                    c.setText("            " + b4 + "------" + "RM " + result4);
                    break;
            }
        }
        else if (resultCode == 2) { // if button2 was clicked
            switch (requestCode) {
                case 0:
                    String result = data.getStringExtra("text");
                    String b = data.getStringExtra("a");
                    d.setText("            " + b + "------" + "RM " + result);
                    break;

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

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

                case 3:
                    String result3 = data.getStringExtra("text");
                    String b3 = data.getStringExtra("a");
                    d.setText("            " + b3 + "------" + "RM " + result3);
                    break;

                case 4:
                    String result4 = data.getStringExtra("text");
                    String b4 = data.getStringExtra("a");
                    d.setText("            " + b4 + "------" + "RM " + result4);
                    break;
            }
        }
    }

所以我的程序应该像这样工作: 如果单击了button1 .... c.setText(); 如果单击了button2 .... d.setText();

但是程序现在 TextView 上没有显示任何内容。错误来自if (resultCode == 1)else if (resultCode == 2) ??非常感谢

假设使用选择Project1.class

Project1.class

public class Project1 extends AppCompatActivity {
    private static String text;
    private static String a;
    private static EditText txt;
    private int g;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.project);
       txt= (EditText)findViewById(R.id.editText36);
        Button b=(Button)findViewById(R.id.button17);

        b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                Intent returnIntent = new Intent();
                a="Project";
                text = txt.getText().toString();
                returnIntent.putExtra("text", text);
                returnIntent.putExtra("a",a);
              //  returnIntent.putExtra("k",getIntent().getExtras().getString("k"));
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });

    }
}

3 个答案:

答案 0 :(得分:0)

你应该避免在这里使用文字代码。

if (resultCode == 1)

更好地使用命名常量 -

if (resultCode == RESULT_OK) {

RESULT_OK为-1,因此可能是您的问题。

答案 1 :(得分:0)

一旦我将所有请求代码设置为相同。没有工作。 似乎您的请求代码 不同,我常常这样看到它们:

V()

检查更改这样的onActivityResult()是否有帮助。

private static final int REQUEST_CODE_THIS = 0;
private static final int REQUEST_CODE_THAT = 1;
private static final int REQUEST_CODE_THE_OTHER = 1003;

public void onClick(DialogInterface dialog, int item) {
                    if (item == 0) {
                        Intent intent = new     Intent(getActivity().getApplicationContext(), Project1.class);
                        startActivityForResult(intent, REQUEST_CODE_THIS);

答案 2 :(得分:0)

request_code是调用函数标识,从中请求它,result_code是被调用的函数标识符,它还将被调用消息的状态指定为Intent.ACTIVITY_OK等。