Android之Activity
下面分为原理趣讲和实际案例
原理:
只有创建意图后指定下一个跳转在哪才能跳转,就语句
Intent intent = new Intent(MainBActivity.this,MainCActivity.class);
做题步骤
1,先创layout(这一步只要创建新的空的Activity则能在三步中均能创
建相关代码)
2,写代码.java
3,manifest里添加页面
用intent跳转页面,用bundle传递数据
两个界面单向传数据
用intent(快递包装盒),bundle(包裹),startActivity(单向邮局)
寄件人需要在快递包装盒写地址,就是new Intent(MainBActivity.this,MainCActivity.class);
收件人首先通过getIntent.getExtras(取件码)从邮局取到包裹,再打开包裹完成相应的功能
多个界面的双向传数据
寄件人的快递包装盒,包裹的功能不变,邮局变为startActivityForResult有双向寄件的邮局
同时还应该在往返车里指定收件人的名字(标识码),如startActivityForResult(intentY,1);
收件人首先去邮局通过取件码取得包裹,完成相应功能
然后创建新的快递包装盒(这里的intent可以写地址,也可以不写,因为邮局里有记录),然后装入新的包裹,
再通过setResult()(返回马车,里面需要表明已经收到上一个快递)送给收件人,这时收件人通过重写onActivityResult()方法(去被邮寄到的地方取件)去获取包裹
在该方法里有几点判断(收件码)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data!=null && resultCode== Activity.RESULT_OK && requestCode==0){
Bundle bundle = data.getExtras();
X.setText(bundle.getString("paramX"));
}
if (data!=null && resultCode== Activity.RESULT_OK && requestCode==1){
Bundle bundle = data.getExtras();
Y.setText(bundle.getString("paramY"));
}
}
intent是否为空,resultCode是否为Activity.RESULT_OK(第一次寄过去,他是否收到)
requestCode是否是某个人寄的(标识符),三者都确定后,就能通过取件码取件,然后打开包裹执行想执行的功能。
案例:
xml文档
首页
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数X="
android:textSize="30sp" />
<EditText
android:id="@+id/paramX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="填入数字" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数Y="
android:textSize="30sp" />
<EditText
android:id="@+id/paramY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="填入数字" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数X+Y="
android:textSize="30sp" />
<EditText
android:id="@+id/paramx_Y"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="填入数字" />
</TableRow>
<Button
android:id="@+id/submitX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取X值" />
<Button
android:id="@+id/submitY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取Y值" />
<Button
android:id="@+id/repleyX_Y"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="求x+y值" />
</TableLayout>
第二页
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数X="
android:textSize="30sp" />
<EditText
android:id="@+id/paramB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="填入数字" />
</TableRow>
<Button
android:id="@+id/repleyX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回X值" />
</TableLayout>
第三页
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="参数Y="
android:textSize="30sp" />
<EditText
android:id="@+id/paramC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="填入数字" />
</TableRow>
<Button
android:id="@+id/repleyY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回Y值" />
</TableLayout>
Java代码
第一页
package com.example.hameworks_01_02;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText X,Y,Z;
private Button screachX,screachY,screachX_Y;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screachX=(Button) findViewById(R.id.submitX);
screachY=(Button) findViewById(R.id.submitY);
X=(EditText)findViewById(R.id.paramX);
Y=(EditText)findViewById(R.id.paramY);
Z=(EditText)findViewById(R.id.paramx_Y);
screachX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentX = new Intent(MainActivity.this, Main2BActivity.class);
startActivityForResult(intentX,0);
}
});
screachY.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentY=new Intent(MainActivity.this,Main2CActivity.class);
startActivityForResult(intentY,1);
}
});
screachX_Y=(Button) findViewById(R.id.repleyX_Y);
screachX_Y.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Z.setText(String.valueOf(Integer.parseInt(X.getText().toString())+Integer.parseInt(Y.getText().toString())));
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data!=null && resultCode== Activity.RESULT_OK && requestCode==0){
Bundle bundle = data.getExtras();
X.setText(bundle.getString("paramX"));
}
if (data!=null && resultCode== Activity.RESULT_OK && requestCode==1){
Bundle bundle = data.getExtras();
Y.setText(bundle.getString("paramY"));
}
}
}
第二页
package com.example.hameworks_01_02;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Main2BActivity extends AppCompatActivity {
private EditText X;
private Button repleyX;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2_b);
repleyX=(Button) findViewById(R.id.repleyX);
repleyX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();//这里可以不加地址,当然加了也不错
Bundle bundle = new Bundle();
X=(EditText) findViewById(R.id.paramB);
bundle.putString("paramX",X.getText().toString());
intent.putExtras(bundle);
setResult(Activity.RESULT_OK,intent);
finish();
}
});
}
}
第三页
package com.example.hameworks_01_02;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Main2CActivity extends AppCompatActivity {
private EditText Y;
private Button repleyY;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2_c);
repleyY=(Button) findViewById(R.id.repleyY);
repleyY.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Main2CActivity.this,MainActivity.class);
Bundle bundle = new Bundle();
Y=(EditText) findViewById(R.id.paramC);
bundle.putString("paramY",Y.getText().toString());
intent.putExtras(bundle);
setResult(Activity.RESULT_OK,intent);
finish();
}
});
}
}
清单xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hameworks_01_02">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Hameworks_01_02">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main2CActivity"
android:exported="true" />
<activity
android:name=".Main2BActivity"
android:exported="true" />
</application>
</manifest>