Activity分为带过滤器的Activity和不带过滤器的Activity
Activity的启动:
带Launcher过滤器的Activity由应用启动时自动启动。
其它的Activity可以调用startActivity方法启动。
startActivity(Intent intent);
startActivityForResult(Intent intent,int requestCode);
用指定的请求码启动,并获取其返回结果(需要重写方法onActivityResult(…)
关闭Activity:
调用finish()方法结束自己
调用finishActivity(int requestCode),结束指定请求码的Activity。
在Activity之间交换数据:
使用Bundle来完成。
把Bundle放到Intent中。
Intent的方法:
putExtras(Bundle data):放入数据
Bundle getExtras():取出数据
putExtras(String name, Xxx value):用键值对的形式存入数据
getXxxExtra(String name):取出指定键的数据
从其他Activity返回结果:
需要使用方法:startActivityForResult(intent,requestCode)
接收送回的结果需要重写方法:public void onActivityResult(reqCode,resCode,intent)
被调用的Activity需要:
1.用getIntent方法取得启动时对应的Intent;
2.用intent.putXXX方法写入要送回的结果;
3.调用setResult(resultCode,intent)方法送回结果,intent说明了把结果送回哪一个Activity;
4.调用方法finish结束自己。
**示例:**Activity1传递值,Activity2返回结果:
布局:
activity_main:
<LinearLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:layout_editor_absoluteY="0dp"
tools:layout_editor_absoluteX="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="昵称:" />
<EditText
android:id="@+id/username"
android:width="200dp"
android:layout_width="200dp"
android:layout_height="50dp"
android:inputType="text" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择身份"
android:onClick="selectPersonal"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"
android:onClick="zhuce"
tools:layout_editor_absoluteX="0dp" />
</LinearLayout>
activity_main2:
<TextView
android:id="@+id/txtInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
activity_main3:
<LinearLayout
android:layout_width="368dp"
android:layout_height="495dp"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp"
android:orientation="vertical">
<CheckBox
android:id="@+id/fu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="富二代"/>
<CheckBox
android:id="@+id/guan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="官二代"/>
<CheckBox
android:id="@+id/nong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="农二代"/>
<CheckBox
android:id="@+id/qiong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="穷二代"/>
<Button
android:id="@+id/qd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
</LinearLayout>
JAVA代码
MainActivity:
public class MainActivity extends AppCompatActivity {
EditText username;
String username1;
String personal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void zhuce(View view){
username = (EditText)findViewById(R.id.username);
username1 = username.getText().toString();
Intent intent = new Intent(this,Main2Activity.class);
Bundle data = new Bundle();
data.putString("username",username1);
data.putString("personal",personal);
intent.putExtras(data);
startActivity(intent);
}
public void selectPersonal(View view){
Intent intent = new Intent(this,Main3Activity.class);
startActivityForResult(intent,0);
}
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if (requestCode==0&&resultCode==0){
ArrayList<String> results = data.getStringArrayListExtra("results");
personal="";
for (String str:results){
personal = personal + str;
}
}
}
}
Main2Activity:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView info = (TextView)findViewById(R.id.txtInfo);
Intent intent = getIntent();
String username = intent.getStringExtra("username");
String peisonal = intent.getStringExtra("personal");
info.setText("您好,"+peisonal+":"+username+"!");
}
}
Main3Activity:
public class Main3Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
Button btn = (Button)findViewById(R.id.qd);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayList<String> res = new ArrayList<String>();
if (((CheckBox)findViewById(R.id.fu)).isChecked())
res.add("富二代");
if (((CheckBox)findViewById(R.id.guan)).isChecked())
res.add("官二代");
if (((CheckBox)findViewById(R.id.nong)).isChecked())
res.add("农二代");
if (((CheckBox)findViewById(R.id.qiong)).isChecked())
res.add("穷二代");
Intent intent = getIntent();
intent.putStringArrayListExtra("results",res);
setResult(0,intent);
finish();
}
});
}
}