同一应用的Activity与Activity的数据通信一般采用以下两种方式:
一、利用接口进行数据通信。
二、利用广播进行数据通信,这种方式可进行跨进程()不同的应用)通信。
三、利用Intent进行通信。
当然还有其他的通信方法,今天讲述利用接口进行数据通信。
1、定义应用接口:
import android.app.Application;
//Application该类成员可在同一应用的所有activity直接调用
public class dataInterface extends Application {
//定义2个静态string变量
public static String mstring="";
public static String mint="";
public static String mint="";
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
}
2、定义2个activity及和布局,如下:
MainActivity类(A):
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view){
switch (view.getId()){
case R.id.button1:
//dataInterface.mint=Integer.valueOf(ev.getText().toString()).intValue();
Toast.makeText(this, dataInterface.mstring, 1000).show();
if((dataInterface.mstring!="")&&(!dataInterface.mstring.equals(""))){
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText("Get activity B data is: String = "+dataInterface.mstring);
}
break;
case R.id.button2:
EditText ev=(EditText)findViewById(R.id.editText1);
dataInterface.mint=ev.getText().toString();
Intent intent =new Intent(this,activityB.class);
startActivity(intent);
finish();
break;
}
}
}
public void onClick(View view){
switch (view.getId()){
case R.id.button1:
//dataInterface.mint=Integer.valueOf(ev.getText().toString()).intValue();
Toast.makeText(this, dataInterface.mstring, 1000).show();
if((dataInterface.mstring!="")&&(!dataInterface.mstring.equals(""))){
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText("Get activity B data is: String = "+dataInterface.mstring);
}
break;
case R.id.button2:
EditText ev=(EditText)findViewById(R.id.editText1);
dataInterface.mint=ev.getText().toString();
Intent intent =new Intent(this,activityB.class);
startActivity(intent);
finish();
break;
}
}
}
布局文件1(MainActivity引用):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.amovedatatob.MainActivity"
tools:ignore="MergeRootFrame" >
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.amovedatatob.MainActivity"
tools:ignore="MergeRootFrame" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="150dp"
android:textSize="20dp"
android:onClick="onClick"
android:text="Get B activity data" />
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="150dp"
android:textSize="20dp"
android:onClick="onClick"
android:text="Get B activity data" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="This old text is A activity "
android:textSize="20dp" />
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="This old text is A activity "
android:textSize="20dp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="220dp"
android:textSize="20dp"
android:onClick="onClick"
android:text="To B activity" />
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="220dp"
android:textSize="20dp"
android:onClick="onClick"
android:text="To B activity" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:layout_marginTop="30dp"
android:inputType="number" >
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:layout_marginTop="30dp"
android:inputType="number" >
<requestFocus />
</EditText>
</EditText>
</FrameLayout>
Activity类(B)
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class activityB extends Activity {
private dataInterface minterface;
String s1="The transfer data is activity B old text .";
EditText et1;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb);
}
public void onClick(View view){
switch(view.getId()){
case R.id.button1:
Toast.makeText(this, dataInterface.mstring, 1000).show();
if((dataInterface.mint!="")&&(!dataInterface.mint.equals(""))){
tv=(TextView)findViewById(R.id.textView2);
tv.setText("Get activity A data is: String = "+dataInterface.mint);
}
break;
case R.id.button2:
et1=(EditText)findViewById(R.id.editText1);
dataInterface.mstring=et1.getText().toString();
Intent intent =new Intent(this,MainActivity.class);
startActivity(intent);
finish();
break;
}
}
}
public void onClick(View view){
switch(view.getId()){
case R.id.button1:
Toast.makeText(this, dataInterface.mstring, 1000).show();
if((dataInterface.mint!="")&&(!dataInterface.mint.equals(""))){
tv=(TextView)findViewById(R.id.textView2);
tv.setText("Get activity A data is: String = "+dataInterface.mint);
}
break;
case R.id.button2:
et1=(EditText)findViewById(R.id.editText1);
dataInterface.mstring=et1.getText().toString();
Intent intent =new Intent(this,MainActivity.class);
startActivity(intent);
finish();
break;
}
}
}
布局文件(activity B引用)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.amovedatatob.MainActivity"
tools:ignore="MergeRootFrame" >
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.amovedatatob.MainActivity"
tools:ignore="MergeRootFrame" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="150dp"
android:textSize="20dp"
android:textColor="#008800"
android:onClick="onClick"
android:text="Get A activity data" />
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="150dp"
android:textSize="20dp"
android:textColor="#008800"
android:onClick="onClick"
android:text="Get A activity data" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Write a text transfer to A activity "
android:textColor="#008800"
android:textSize="20dp" />
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Write a text transfer to A activity "
android:textColor="#008800"
android:textSize="20dp" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10" >
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10" >
<requestFocus />
</EditText>
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:text="TextView" />
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:text="TextView" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="220dp"
android:textSize="20dp"
android:textColor="#008800"
android:onClick="onClick"
android:text="To activity A" />
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="74dp"
android:layout_marginTop="220dp"
android:textSize="20dp"
android:textColor="#008800"
android:onClick="onClick"
android:text="To activity A" />
</FrameLayout>
注册Activity B,
Manifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.amovedatatob"
android:versionCode="1"
android:versionName="1.0" >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.amovedatatob"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.amovedatatob.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.amovedatatob.MainActivity"
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="activityB"></activity>
</application>
</intent-filter>
</activity>
<activity android:name="activityB"></activity>
</application>
</manifest>
运行即可。
Activity与Activity的数据通Demo下载:http://download.csdn.net/detail/xiaozenbin/9743658