Activity例を詳しく説明し、activityを起動し、結果を返します。
11104 ワード
まず効果の展示図を見せます。
1概要
Activityで新たにActivityを開いてから戻ってくるデータを得るためには、システムで提供されるstartActivityForResoult(Intent intent,int request Code)メソッドを使用して新しいActivityを開き、新しいActivityが閉じたら前のActivityにデータを転送し、転送されるために、Activity(前のActivity)を作成しなければなりません。int resultCode,Intent data)方法。
2セットのResult
startActivityForResoult(Intent intent,int request Code)方法を使って新しいActivityを開いて、新しいActivityが閉じる前に前のActivityにデータを返す必要があります。システムから提供されたsetsResoult(int recutCode,Intent data)方法で実現します。
「閉じる」ボタンをクリックすると、現在のページを閉じて、同時に「古いActivityです」ページにジャンプします。そして、前のActivityにresultパラメータを伝えます。
3要求コードの役割
startActivityForResoult(Intent intent,int request Code)方法を使って新しいActivityを開きます。私たちはstartActivityForResoult()方法のために要求コード(第二のパラメータ)に入る必要があります。要求コードの値は、要求元を識別するために、トラフィックの必要に応じて自身で設定される。例えば、一つのActivityには二つのボタンがあります。この二つのボタンを押すと、同じActivityが開きます。そのボタンで新しいActivityが開きます。この新しいActivityがオフになると、システムは前のActivityのonActivityResoultを呼び出します。onActivityResult()の方法で、新しいActivityがそのボタンで開かれていることを知っていて、それに応じた業務処理を行う場合、このようにしてもいいです。
一つのActivityでは、startActivity ForResoult()を使用して、複数の異なるActivityを開いて、異なる業務を処理することができます。これらの新しいActivityがオフになると、システムは前のActivityのonActivityResoult(int request Code,int recultCode,int recultCode,Intent data)を呼び出します。戻ってきたデータがどの新しいActivityから来たかを知るために、onActivityResult()方法でこのようにすることができます。
TestResult Activity.java
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を起动して结果を返します。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。