`
trygood
  • 浏览: 78041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

startActivityForResult

阅读更多
startActivityForResult 方法--返回数据到前一个Activity

① 新建工程

② 修改main.xml布局,添加UI元素
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
    android:id="@+id/showText"
    android:layout_width="wrap_content"
    android:layout_height="26px"
    android:text="计算你的标准体重!"
    android:textSize="25px"
    android:layout_x="65px"
    android:layout_y="21px">
</TextView>
<TextView
    android:id="@+id/text_Sex"
    android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:layout_x="71px"
        android:layout_y="103px">
</TextView>
<TextView
    android:id="@+id/text_Height"
    android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="身高:"
        android:layout_x="72px"
        android:layout_y="169px">
</TextView>
<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="wrap_content"
android:layout_height="37px"
android:orientation="horizontal"
android:layout_x="124px"
android:layout_y="101px">
<RadioButton
    android:id="@+id/Sex_Man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男">
</RadioButton>
<RadioButton
    android:id="@+id/Sex_Woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女">
</RadioButton>
</RadioGroup>
<EditText
    android:id="@+id/height_Edit"
    android:layout_width="123px"
android:layout_height="wrap_content"
android:text=""
android:numeric="decimal"
android:textSize="18sp"
android:layout_x="124px"
android:layout_y="160px">
</EditText>
<Button
    android:id="@+id/button_OK"
    android:layout_width="80px"
android:layout_height="wrap_content"
android:text="计算"
android:layout_x="125px"
android:layout_y="263px">
</Button>
</AbsoluteLayout>
复制代码

③ 新建一个mylayout.xml布局,添加UI元素
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:layout_x="50px"
    android:layout_y="72px"
></TextView>
<Button
    android:id="@+id/button_back"
    android:layout_width="100px"
    android:layout_height="48px"
    android:text="回上一页"
    android:layout_x="110px"
    android:layout_y="180px"
></Button>
</AbsoluteLayout>
复制代码

④ 新建一个SecondActivity.java的Activity子类
package zyf.Ex11_UI_A;

import android.app.Activity;
import android.os.Bundle;

public class BMIActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
复制代码

⑤ 在AndroidManifest.xml中添加SecondActivity这个Activity
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="zyf.Ex11_UI_A"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Ex11_UI_A"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <activity android:name="BMIActivity"></activity>
</application>
    <uses-sdk android:minSdkVersion="2" />
</manifest>
复制代码

⑥ 修改mainActivity.java代码
package zyf.Ex11_UI_A;
import android.app.Activity;/* import 相关class */
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
public class Ex11_UI_A extends Activity {
protected int my_requestCode = 1550;
private EditText edit_height;
private RadioButton radiobutton_Man, radiobutton_Woman;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 载入main.xml Layout */
setContentView(R.layout.main);
/* 以findViewById()取得Button 对象,并添加onClickListener */
Button ok = (Button) findViewById(R.id.button_OK);
edit_height = (EditText) findViewById(R.id.height_Edit);
radiobutton_Man = (RadioButton) findViewById(R.id.Sex_Man);
radiobutton_Woman = (RadioButton) findViewById(R.id.Sex_Woman);
ok.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try {
/* 取得输入的身高 */
double height = Double.parseDouble(edit_height.getText()
.toString());
/* 取得选择的性别 */
String sex = "";
if (radiobutton_Man.isChecked()) {
sex = "M";
} else {
sex = "F";
}
/* new 一个Intent 对象,并指定class */
Intent intent = new Intent();
intent.setClass(Ex11_UI_A.this, BMIActivity.class);
/* new 一个Bundle对象,并将要传递的数据传入 */
Bundle bundle = new Bundle();
bundle.putDouble("height", height);
bundle.putString("sex", sex);
/* 将Bundle 对象assign 给Intent */
intent.putExtras(bundle);
/* 调用Activity EX03_10_1 */
startActivityForResult(intent, my_requestCode);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(Ex11_UI_A.this,
                               R.string.errorString, Toast.LENGTH_LONG).show();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
                                                                    Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case RESULT_OK:
/* 取得来自Activity2 的数据,并显示于画面上 */
Bundle bunde = data.getExtras();
String sex = bunde.getString("sex");
double height = bunde.getDouble("height");
edit_height.setText("" + height);
if (sex.equals("M")) {
radiobutton_Man.setChecked(true);
} else {
radiobutton_Woman.setChecked(true);
}
break;
default:
break;
}
}
}
复制代码

⑦ 修改SecondActivity.java代码
package zyf.Ex11_UI_A;
/* import 相关class */
import java.text.DecimalFormat;
import java.text.NumberFormat;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class BMIActivity extends Activity {
private Intent intent;
private Bundle bunde;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 加载main.xml Layout */
setContentView(R.layout.mylayout);

/* 取得Intent 中的Bundle 对象 */
intent = this.getIntent();
bunde = intent.getExtras();

/* 取得Bundle 对象中的数据 */
String sex = bunde.getString("sex");
double height = bunde.getDouble("height");
/* 判断性别 */
String sexText = "";
if (sex.equals("M")) {
sexText = "男性";
} else {
sexText = "女性";
}
/* 取得标准体重 */
String weight = this.getWeight(sex, height);
/* 设置输出文字 */
TextView tv1 = (TextView) findViewById(R.id.text1);
tv1.setText("你是一位" + sexText + "\n你的身高是" + height +
                                          "厘米\n你的标准体重是"+ weight + "公斤");


/* 以findViewById()取得Button 对象,并添加onClickListener */
Button b1 = (Button) findViewById(R.id.button_back);
b1.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/* 返回result 回上一个activity */
BMIActivity.this.setResult(RESULT_OK, intent);
/* 结束这个activity */
BMIActivity.this.finish();
}
});
}
/* 四舍五入的method */
private String format(double num) {
NumberFormat formatter = new DecimalFormat("0.00");
String s = formatter.format(num);
return s;
}
/* 以findViewById()取得Button 对象,并添加onClickListener */
private String getWeight(String sex, double height) {
String weight = "";
if (sex.equals("M")) {
weight = format((height - 80) * 0.7);
} else {
weight = format((height - 70) * 0.6);
}
return weight;
}
}
复制代码

⑧ 结果


  • 大小: 31.7 KB
分享到:
评论

相关推荐

    StartActivityForResult

    在Android应用开发中,`StartActivityForResult`是一个关键的组件交互方法,用于在一个Activity(活动)启动另一个Activity并期望得到返回结果。这个方法允许开发者在应用程序的不同组件之间传递数据,通常用于实现...

    startActivityForResult的详细用法

    在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们在启动一个Activity时传递数据,并在那个Activity执行完后返回结果到调用它的Activity。这个过程涉及到Intent、生命周期管理和数据...

    startActivityForResult过时.md

    startActivityForResult过时.md

    startActivityForResult intent 跳转相关的

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行交互,尤其是在需要从一个Activity获取返回结果时。这个方法允许我们启动一个新的Activity,并在它完成之后得到回调...

    【android】的startActivityForResult

    在Android应用开发中,`startActivityForResult`是一个关键方法,用于在两个Activity之间进行交互,尤其是在需要从一个Activity启动另一个Activity并期待返回结果时。这个方法允许开发者在启动新的Activity时传递...

    Android-一种startActivityForResult更简单流程

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行通信,尤其是在需要从一个Activity返回结果到另一个Activity时。这个方法使得开发者可以启动一个新的Activity,并...

    startActivityForResult你所不知道的---Fragment

    然而,尽管`Activity`中的`startActivityForResult()`方法被广泛使用,但`Fragment`中的相应功能`startActivityForResult()`却常常被开发者忽视。这个方法在处理`Fragment`与`Activity`之间的交互,特别是数据返回时...

    Android之Intent通过startActivityForResult方法启动新Activity

    `startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...

    测试Activity的四种启动模式对startActivityForResult的影响

    在Android应用开发中,`Activity`是用户界面的主要载体,而`startActivityForResult`方法则用于在一个`Activity`中启动另一个`Activity`并期待得到返回的结果。本文将深入探讨`Activity`的四种启动模式(Standard、...

    Android-基于RxPermissions框架思想在使用startActivityForResult可以不重写onActivityResult回调

    在Android开发中,`startActivityForResult`方法是用于启动一个新的Activity并等待其返回结果的关键机制。通常情况下,当从子Activity返回时,我们需要重写`onActivityResult`回调来处理返回的数据。然而,随着...

    关于Activity与Fragment混用中对于startActivityForResult方法的解析示例

    在某些复杂的应用场景下,我们可能会在Fragment中调用Activity的`startActivityForResult()`方法来实现特定功能,比如选择图片、编辑数据等。下面将详细解释`startActivityForResult()`的使用以及在Activity与...

    startActivityForResult Demo

    在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们启动一个新的Activity,并在新Activity执行完特定操作后返回结果。这篇博客“startActivityForResult Demo”可能详细介绍了如何使用...

    startActivityForResult+onActivityResult+setResult

    3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)

    StartActivityForResult小例子

    在Android应用开发中,`StartActivityForResult`是一个关键的机制,它允许一个Activity启动另一个Activity,并期待在后者完成时返回一些结果。这个过程涉及到两个主要的Activity:启动者(调用`...

    startActivityForResult_demo

    在Android应用开发中,`startActivityForResult`是一个关键的API,用于从一个活动(Activity)启动另一个活动,并期望在新活动执行完毕后返回结果。这个方法使得不同活动间的交互变得可能,尤其在需要用户进行一些...

    startActivityForResult使用方式

    在Android应用开发中,`startActivityForResult()`是一个关键的方法,用于在不同的Activity之间进行数据交互。这个方法允许一个Activity启动另一个Activity,并等待返回的结果。在本篇中,我们将深入探讨`...

    startActivityForResult用法详解

    在Android应用开发中,`startActivityForResult`是一个关键的方法,用于启动一个新的Activity并期待返回一个结果。这个方法常用于在不同Activity之间进行数据交互,比如获取用户的选择、处理权限请求等。在这个场景...

    简化 startActivityForResult 的使用1

    "简化 startActivityForResult 的使用" 在 Android 开发中,startActivityForResult 方法是一个非常常用的方法,它允许 Activity 或者 Fragment 启动另一个 Activity 并且可以获取到结果。但是,传统的使用方式存在...

    使用startActivityForResult得到通讯录联系人信息

    这里实现的效果是,点击a Activity后,屏幕会跳转到手机的通讯录,任意选择点击一个通讯录中的联系人,则从通讯录Activity跳回到a Activity并在a Activity上显示你刚才选择通讯录联系人的名字。

Global site tag (gtag.js) - Google Analytics