Activity例を詳しく説明し、activityを起動し、結果を返します。

11104 ワード

まず効果の展示図を見せます。

1概要
Activityで新たにActivityを開いてから戻ってくるデータを得るためには、システムで提供されるstartActivityForResoult(Intent intent,int request Code)メソッドを使用して新しいActivityを開き、新しいActivityが閉じたら前のActivityにデータを転送し、転送されるために、Activity(前のActivity)を作成しなければなりません。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を通じて伝達されます。androidプラットフォームは、前のActivityのonActivityResoult()メソッドを呼び出して、戻りデータを格納したIntentを第3の入力パラメータとして入力し、onActivityResoult()方法で、第3の入力パラメータで新しいActivityのデータを取り出すことができます。
2セットのResult
startActivityForResoult(Intent intent,int request Code)方法を使って新しいActivityを開いて、新しいActivityが閉じる前に前のActivityにデータを返す必要があります。システムから提供されたsetsResoult(int recutCode,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();
}
});
}
}
setsResult()メソッドの最初のパラメータ値は、業務の必要に応じて自分で定義できます。上のコードで使用されたRESULT_。OKはシステム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です」ページにジャンプします。そして、前のActivityにresultパラメータを伝えます。
3要求コードの役割
startActivityForResoult(Intent intent,int request Code)方法を使って新しいActivityを開きます。私たちはstartActivityForResoult()方法のために要求コード(第二のパラメータ)に入る必要があります。要求コードの値は、要求元を識別するために、トラフィックの必要に応じて自身で設定される。例えば、一つのActivityには二つのボタンがあります。この二つのボタンを押すと、同じActivityが開きます。そのボタンで新しいActivityが開きます。この新しいActivityがオフになると、システムは前のActivityのonActivityResoultを呼び出します。onActivityResult()の方法で、新しい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 ForResoult()を使用して、複数の異なるActivityを開いて、異なる業務を処理することができます。これらの新しいActivityがオフになると、システムは前のActivityのonActivityResoult(int request Code,int recultCode,int recultCode,Intent data)を呼び出します。戻ってきたデータがどの新しいActivityから来たかを知るために、onActivityResult()方法でこのようにすることができます。

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 Demoソース:
TestResult Activity.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;
}
}
}
TestResult Activity 1

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();
}
}
TestResult Activity 2

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を起动して结果を返します。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。