Android 는 시작 한 Activity 에서 전 송 된 데 이 터 를 가 져 오 는 소결 을 배 웁 니 다.

현재 Activity:하나의 Button 과 하나의 TextView 를 포함 하여 다른 Activity 를 시작 하고 전 송 된 데 이 터 를 표시 합 니 다.여기에 onActivity Result()방법 을 다시 썼 습 니 다.

public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//  TextView
textView=(TextView)findViewById(R.id.textView);
findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,AnotherActivity.class);
startActivityForResult(intent,0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText("    Activity       :"+data.getStringExtra("data"));
}
}
XML 파일:activitymain.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.androidtest.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="     Activity"
android:id="@+id/btnSend" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView" />
</LinearLayout>
시 작 된 Activity:Button 과 editText 를 포함 하여 데 이 터 를 전송 하고 전송 할 데 이 터 를 입력 합 니 다.

public class AnotherActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
editText= (EditText) findViewById(R.id.editText);
Button button= (Button) findViewById(R.id.btnSendBack);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//    
Intent i=new Intent();
i.putExtra("data",editText.getText().toString());
setResult(1,i);
finish();
}
});
}
}
xml 파일:activityanother.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.androidtest.AnotherActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="    "
android:id="@+id/btnSendBack"/>
</LinearLayout> 
실행 결과:

보충:여기 서 보 내기 단 추 를 누 르 면 이전 Activity 로 돌아 가 는 데 문제 가 없 지만 시스템 자체 의 리 턴 단 추 를 누 르 면 오류 가 발생 합 니 다.이 bug 가 발생 한 이 유 는 resultCode 가 판단 되 지 않 았 기 때 문 입 니 다.시스템 자체 의 리 턴 키 를 누 른 resultCode=RESULTCANCELED,그래서 달라 요.
해결 방법:그래서 여기 서 requestCode 와 resultCode 가 역할 을 발휘 할 수 있 습 니 다.상기 프로그램 에서 requestCode=0,resultCode=1,즉 이 Activity 로 전환 하 는 지,이전 Activity 로 돌아 가 는 지,아니면 시스템 리 턴 키 를 통 해 진행 되 는 지 판단 해 야 하기 때문에 MainActivity 중의 onActivity Result()방법 은 다음 과 같이 개선 할 수 있 습 니 다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0){
if(resultCode==1){
textView.setText("    Activity       :"+data.getStringExtra("data"));
}
}
}
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 시작 되 는 Activity 에서 전 송 된 데 이 터 를 얻 는 것 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기