在Activity之間傳遞數據方法

1.Intent對象 android

2.靜態變量 app

 3.經過剪切板 ide

4.經過全局對象Application this

public class ATActivity extends Activity { spa

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  // 獲取管理剪切板的對象
  ClipboardManager clipbord = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  // 向剪切板保存字符串
  clipbord.setText("數據來自剪切板"); code

  // 從剪切板獲取數據
  ClipboardManager c = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  CharSequence text = c.getText();
  Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); xml


   // 經過全局對象獲取
  MyAppData md = (MyAppData) getApplicationContext();
  String a = md.country;
  int b = md.z;
  System.out.println();
 }
 } 對象

MyAppData類 ip

public class MyAppData extends Application {
 public String country = "china";
 public int z = 0; 字符串

好比此時有個類Data

Data data=new Data();//在這裏不須要序列化

}

在AndroidMainfest.xml配置

 

 <application
        android:name=".MyAppData"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ATActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

 

 

 

// 讓剪切板傳遞複雜數據,能夠直接使用字符串傳遞任何二進制的數據(包括可序列化對象,圖像等)
  ClipboardManager c1 = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  Data clipd = new Data();//在這裏須要序列化
  clipd.id = 7000;
  clipd.name = "經過剪切板傳遞數據";
  // 將clipd對象轉化成Base64格式的字符串
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  String base64Str = "";
  try {
   ObjectOutputStream oos = new ObjectOutputStream(baos);
   oos.writeObject(clipd);
   // 使用Base64.encodeToString方法將byte[]數據轉換成Base64字符串
   base64Str = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
   oos.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  c1.setText(base64Str);

  ClipboardManager c2 = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
  String base64StringValue = c2.getText().toString();
  // 將Base64格式字符串還原成byte[]格式的數據
  byte[] buffer = Base64.decode(base64StringValue, Base64.DEFAULT);
  ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
  try {
   ObjectInputStream ois = new ObjectInputStream(bais);
   // 將byte[]數據還原成Data對象
   Data data = (Data) ois.readObject();
   int ada = data.id;
   String afa = data.name;
   System.out.println();
  } catch (StreamCorruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (OptionalDataException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

public class Data implements Serializable {  public int id;  public String name; }

相關文章
相關標籤/搜索