Activity 인 스 턴 스 상세 한 시작 activity 및 결 과 를 되 돌려 줍 니 다.

11654 단어 activity 상세 설명
먼저 효과 전시 그림 을 보 여 드 리 겠 습 니 다.

프로필
Activity 에서 Activity 를 새로 열 고 닫 은 후 되 돌아 오 는 데 이 터 를 얻 으 려 면 시스템 에서 제공 하 는 startActivity ForResult(Intent intent,int requestCode)방법 으로 새로운 Activity 를 열 어야 합 니 다.새로운 Activity 가 닫 힌 후 앞의 Activity 에 데 이 터 를 전송 합 니 다.전 송 된 데 이 터 를 얻 으 려 면 앞의 Activity 에 onActivity Result(int requestCode,int resultCode,Intent data)방법.

public class MainActivity extends Activity {
private final static String TAG="MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnOpen=(Button)this.findViewById(R.id.btnOpen);
btnOpen.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
//     Activity        
//         ,            
startActivityForResult(new Intent(MainActivity.this, OtherActivity.class), 1);
}
});
}
/**
*          ,      Activity ( MainActivity )  onActivityResult  
*
* requestCode    ,   startActivityForResult()      
* resultCode    ,                Activity
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getExtras().getString("result");//   Activity         
Log.i(TAG, result);
}
}
새 Activity 가 닫 히 면 새 Activity 가 되 돌아 오 는 데 이 터 는 Intent 를 통 해 전 달 됩 니 다.안 드 로 이 드 플랫폼 은 앞의 Activity 의 onActivity Result()방법 을 호출 하여 데 이 터 를 되 돌려 주 는 Intent 를 세 번 째 입력 매개 변수 로 전송 합 니 다.onActivity Result()방법 에서 세 번 째 입력 매개 변수 로 새 Activity 가 되 돌아 오 는 데 이 터 를 꺼 낼 수 있 습 니 다.
2 setResult
startActivity ForResult(Intent intent,int requestCode)방법 으로 새로운 Activity 를 엽 니 다.새 Activity 가 닫 히 기 전에 앞의 Activity 에 데 이 터 를 되 돌려 주 려 면 시스템 이 제공 하 는 setResult(int resultCode,Intent data)방법 을 사용 해 야 합 니 다.

public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
Button btnClose=(Button)findViewById(R.id.btnClose);
btnClose.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
//     Intent  
Intent intent = new Intent();
//       Intent
intent.putExtra("result", "My name is linjiqin");
//      
OtherActivity.this.setResult(RESULT_OK, intent);
//  Activity
OtherActivity.this.finish();
}
});
}
}
setResult()방법의 첫 번 째 매개 변수 값 은 업무 수요 에 따라 스스로 정의 할 수 있 습 니 다.위 코드 에 사 용 된 RESULTOK 는 시스템 Activity 클래스 가 정의 하 는 상수 입 니 다.값 은-1 이 고 코드 세 션 은 다음 과 같 습 니 다.

public class android.app.Activity extends ......{
public static final int RESULT_CANCELED = 0;
public static final int RESULT_OK = -1;
public static final int RESULT_FIRST_USER = 1;
}
설명:"새로운 Activity 열기"단 추 를 누 르 면"나 는 새로 연 Activity"페이지 로 이동 합 니 다.
"닫 기"단 추 를 누 르 면 현재 페이지 를 닫 고"나 는 오래된 Activity"페이지 로 이동 하 며 result 인 자 를 이전 Activity 에 전달 합 니 다.
3 요청 코드 의 역할
startActivity ForResult(Intent intent,int requestCode)방법 으로 새로운 Activity 를 엽 니 다.startActivity ForResult()방법 에 요청 코드(두 번 째 인자)를 입력 해 야 합 니 다.요청 코드 의 값 은 업무 수요 에 따라 자신 이 설정 하여 표지 요청 소스 에 사용 합 니 다.예 를 들 어 하나의 Activity 는 두 개의 버튼 이 있 습 니 다.이 두 단 추 를 누 르 면 같은 Activity 를 엽 니 다.그 버튼 이 든 새로운 Activity 를 엽 니 다.이 새로운 Activity 가 닫 히 면 시스템 은 앞의 Activity Result(int requestCode,int resultCode,Intent data)방법 을 호출 합 니 다.onActivity Result()방법 에서 새 Activity 가 그 버튼 으로 열 려 있 고 해당 하 는 업무 처 리 를 해 야 한 다 는 것 을 알 아야 한다 면 이렇게 할 수 있 습 니 다.

@Override public void onCreate(Bundle savedInstanceState) {
....
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1);
}
});
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2);
}
});
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
//    1   ,       
case 2:
//    2   ,       
}
}
}
4 결과 코드 의 역할
하나의 Activity 에 서 는 startActivity ForResult()방법 으로 여러 개의 서로 다른 Activity 를 열 어 서로 다른 업 무 를 처리 할 수 있 습 니 다.이 새로운 Activity 가 닫 히 면 시스템 은 앞의 Activity Result(int requestCode,int resultCode,Intent data)방법 을 호출 합 니 다.되 돌아 오 는 데이터 가 어떤 새로운 Activity 에서 왔 는 지 알 기 위해 서 는 onActivity Result()방법 에서 이렇게 할 수 있 습 니 다(ResultActivity 와 NewActivity 가 열 려 는 새로운 Activity).

public class ResultActivity extends Activity {
.....
ResultActivity.this.setResult(1, intent);
ResultActivity.this.finish();
}
public class NewActivity extends Activity {
......
NewActivity.this.setResult(2, intent);
NewActivity.this.finish();
}
public class MainActivity extends Activity { //   Activity   ResultActivity NewActivity
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(resultCode){
case 1:
// ResultActivity     
case 2:
// NewActivity     
}
}
}
5 데모 소스 코드:
TestResultActivity.java

package mm.shandong.com.testresult;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
public class TestResultActivity extends AppCompatActivity {
EditText editTextBrand;
RadioGroup radioGroup;
TextView textViewXH;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_result);
editTextBrand = (EditText) findViewById(R.id.editTextBrand);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
textViewXH = (TextView) findViewById(R.id.textViewXH);
RadioButton radionButton = (RadioButton) radioGroup.getChildAt(0);
radionButton.setChecked(true);
}
///         
public void selectBrand(View view) {
Intent intent = new Intent(this, TestResultActivity1.class);
startActivityForResult(intent, 1);
}
///        
public void selectCompute(View view) {
Intent intent = new Intent(this, TestResultActivity2.class);
String brand = editTextBrand.getText().toString();
RadioButton radionButton =
(RadioButton) radioGroup.findViewById(radioGroup.getCheckedRadioButtonId());
String nc = radionButton.getText().toString();
intent.putExtra("brand", brand);
intent.putExtra("nc", nc);
startActivityForResult(intent, 2);
textViewXH.setText("");
}
///activity       
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) { //resultCode      
case 1:
if (resultCode == 2) {
String brand = intent.getStringExtra("brand");
editTextBrand.setText(brand);
}
break;
case 2:
if (resultCode == 3) {
String xh = intent.getStringExtra("xh");
textViewXH.setText(xh);
}
break;
}
}
}
TestResultActivity1

package mm.shandong.com.testresult;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class TestResultActivity1 extends AppCompatActivity {
ListView listView;
String[] brands = new String[]{"  ", "  "};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_result1);
listView = (ListView) findViewById(R.id.listView);
ArrayAdapter arrayAdapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_checked, brands);
listView.setAdapter(arrayAdapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
///         
public void submit(View view) {
int index = listView.getCheckedItemPosition();
if (index < 0) {
Toast.makeText(this, "     ", Toast.LENGTH_SHORT).show();
return;
}
String brand = (String) listView.getItemAtPosition(index);
int resultCode = 2;
Intent intent = getIntent();
intent.putExtra("brand", brand);
setResult(2, intent);
finish();
}
}
TestResultActivity2

package mm.shandong.com.testresult;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestResultActivity2 extends AppCompatActivity {
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_result2);
Intent intent=getIntent();
String brand=intent.getStringExtra("brand");
String nc=intent.getStringExtra("nc");
Map map=initData();
List<String> lists= (List<String>) map.get(brand+nc);
listView= (ListView) findViewById(R.id.listView);
ArrayAdapter arrayAdapter=new ArrayAdapter(this,
android.R.layout.simple_list_item_checked,lists);
listView.setAdapter(arrayAdapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
///         
public void submit(View view){
int index= listView.getCheckedItemPosition();
if(index<0){
Toast.makeText(this,"     ",Toast.LENGTH_SHORT).show();
return ;
}
String xh= (String) listView.getItemAtPosition(index);
int resultCode=2;
Intent intent=getIntent();
intent.putExtra("xh",xh);
setResult(3,intent);
finish();
}
///      
public Map initData(){
Map map=new HashMap();
List<String> lists=new ArrayList<>();
lists.add("  1G0001");
lists.add("  1G0002");
map.put("  1G",lists);
lists=new ArrayList<>();
lists.add("  2G0001");
lists.add("  2G0002");
map.put("  2G",lists);
lists=new ArrayList<>();
lists.add("  1G0001");
lists.add("  1G0002");
map.put("  1G",lists);
lists=new ArrayList<>();
lists.add("  2G0001");
lists.add("  2G0002");
map.put("  2G",lists);
return map;
}
}
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 Activity 인 스 턴 스 의 시작 activity 를 상세 하 게 설명 하고 결 과 를 되 돌려 드 리 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기