Activity与Activity利用接口进行数据通信

来源:互联网 发布:java main 编辑:程序博客网 时间:2024/04/29 13:11

同一应用的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="";
 @Override
 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;
public class MainActivity extends ActionBarActivity {
   
  
    @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; 
     }
     
    }
  
 
}

布局文件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" >
    <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" />
    <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" />
    <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" />
    <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" >
        <requestFocus />
    </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;
  
 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;
      }
     }
  
  
 }
布局文件(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" >
    <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" />
    <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" />
    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:ems="10" >
        <requestFocus />
    </EditText>
    <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" />
</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" >
    <uses-sdk
        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" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="activityB"></activity>
    </application>
</manifest>
运行即可。
Activity与Activity的数据通Demo下载:http://download.csdn.net/detail/xiaozenbin/9743658



1 0
原创粉丝点击