activity直接数据传递
在软件中所有的数据不可能在同一个页面或者是同一个类中进行处理,这就涉及到数据直接的传递,在web中前途数据要传递到后场进行数据处理是通过form表单进行传递的在Android中数据直接的传递是通过Bundle把数据压到栈中进行数据传递,然后通过.getIntent().getExtras()获取到里面的数据,下面是一个简单是数据之间的传递。首先在第一个activity放两个EditView然后用户通过输入两个数据并传到另外一个activity中然后计算两个数的和显示结果
首先在main.xml中定义两个EditView和一个Button
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="计算数据"
/>
<EditText
android:id="@+id/data1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/data2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="计算"
/>
</LinearLayout>
创建第一个activity类
packagecom.data;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
publicclassActivityDataextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateButtonbutton;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
EditTextdata1=(EditText)findViewById(R.id.data1);
EditTextdata2=(EditText)findViewById(R.id.data2);
Intentintent=newIntent();
Bundlebundle=newBundle();
bundle.putString("value1",data1.getText().toString());
bundle.putString("value2",data2.getText().toString());
intent.putExtras(bundle);
intent.setClass(ActivityData.this,ResultActivity.class);
startActivity(intent);
ActivityData.this.finish();
}
});
}
}
并把用户输入的数据放在Bundle中通过Intent传递到另外一个activity
另外在layout文件夹中创建一个mylayout.xml配置文件里面添加一个EditView显示标签用了显示计算结果
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
创建另外接收数据的activity
packagecom.data;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassResultActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
Bundlebundle=this.getIntent().getExtras();
Doubledata1=Double.parseDouble(bundle.getString("value1"));
Doubledata2=Double.parseDouble(bundle.getString("value2"));
Doubleresult=data1+data2;
TextViewtextView=(TextView)findViewById(R.id.result);
textView.setText("result========"+result);
}
}
获取第一个activity传过来的数据进行计算并显示结果
在AndroidManifest.xml中注册activity
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.data"
android:versionCode="1"
android:versionname="1.0">
<uses-sdkandroid:minSdkVersion="4"/>
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".ActivityData"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activityandroid:name=".ResultActivity"></activity>
</application>
</manifest>
执行结果图