在完成时设置先前活动的视图

时间:2017-05-12 10:04:46

标签: android android-activity nullpointerexception

我有两个活动,活动A有一个textview和一个按钮,通过按下按钮,我将转到活动B.在活动B中,包含editText和一个按钮,编辑editText然后单击活动B中的按钮然后它将返回到活动a并在TextView中显示文本。

create table SELF_REL_TAB
(
  ID        number not null,
  PARENT_ID number,
  STATUS    varchar2(1)
);

comment on column SELF_REL_TAB.ID
  is 'Primary key';
comment on column SELF_REL_TAB.PARENT_ID
  is 'Self reference';
comment on column SELF_REL_TAB.STATUS
  is 'Status A(ctive)  H(istorical)';

alter table SELF_REL_TAB
  add constraint SRT_PK primary key (ID);
alter table SELF_REL_TAB
  add constraint SRT_SRT_FK foreign key (PARENT_ID)
  references SELF_REL_TAB (ID);

alter table SELF_REL_TAB
  add constraint srt_status_chk
  check (STATUS IN ('A','H'));

INSERT INTO SELF_REL_TAB VALUES (1, NULL, 'A');
INSERT INTO SELF_REL_TAB VALUES (2, 1, 'A');
INSERT INTO SELF_REL_TAB VALUES (3, 1, 'H');

然而,在按下活动B中的按钮后,我将获得nullpointerexception。我不想将B更改为片段。

2 个答案:

答案 0 :(得分:0)

如果您有两项活动,则需要从A中的B活动接收值。您可以使用startActivityForResult()并在B中发送您需要的值。

您可以在这里学习如何使用它。

https://developer.android.com/training/basics/intents/result.html?hl=es

答案 1 :(得分:0)

你想做这样的事情

public class A extends AppCompatActivity{

    public void goToB_activityBringText(){
       Intent i = new Intent(this, B.class);
       startActivityForResult(i, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                String result=data.getStringExtra("result");
                 textView.setText(result);
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
    }
}

public class B extends AppCompatActivity{

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

        Intent returnIntent = new Intent(); 
        returnIntent.putExtra("result","This is my text value");
        setResult(Activity.RESULT_OK,returnIntent);
        finish();

        }
    });
}

阅读活动的startActivityForResult方法的完整详细信息