<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                1、在Activity之間傳遞數據還可以利用一些技巧,無論是Windows還是Linux操作系統,都支持一種叫做剪切板的技術(某一程序將數據復制到剪切板上,其它的任何程序都可以從剪切板中獲取數據); 2、新建一個名為“android_intent3”的Android工程; 3、在main.xml文件中添加Button: ~~~ <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Android使用剪切板傳遞數據" /> ~~~ 4、新建布局文件”other.xml“,添加”TextView“,代碼: ~~~ <?xml version="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" android:orientation="vertical" > <TextVeiw android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent" > </TextVeiw> </LinearLayout> ~~~ 5、聲明一個Activity,”OtherActivity“,并繼承Activity,在此類中創建”onCreate“方法; 6、回到“Main.java”中,添加成員Button,并向Android系統調用剪切板,構造意圖并啟動,代碼: ~~~ package com.android.myintent; import android.os.Bundle; import android.app.Activity; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Main extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 從Android系統中調用剪切板的服務 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); String name = "Jack"; clipboardManager.setText(name);// 向剪切板添加數據 Intent intent = new Intent(Main.this, OtherActivity.class); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } ~~~ 9、點擊“OtherActivity.java”,添加獲取剪切板方法,獲取剪切板數據,設置到“textView”上,代碼: ~~~ package com.android.myintent; import android.app.Activity; import android.content.ClipboardManager; import android.content.Context; import android.os.Bundle; import android.widget.TextView; public class OtherActivity extends Activity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); textView = (TextView) this.findViewById(R.id.msg); ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); String msgString = clipboardManager.getText().toString();//從剪切板中獲取數據 textView.setText(msgString); } public OtherActivity() { // TODO Auto-generated constructor stub } } ~~~ 10、在“AndroidManifest.xml”上添加“Activity”: ~~~ <activity android:name=".OtherActivity" > </activity> ~~~ 11、運行: ![](https://box.kancloud.cn/2016-08-23_57bc06b1615e0.jpg) ![](https://box.kancloud.cn/2016-08-23_57bc06b183294.jpg) 12、點擊按鈕,居然提示無法運行,后來經過查找,發現是因為在Android11版本之后,原來利用剪切板傳遞數據使用的setText()和getText()方法被棄用了,只能使用ClipData對象來代替了~下面我們來對上面的程序做出一點改動即可~ 第8步中橙色部分的程序替換為: ~~~ ClipData clipData = ClipData.newPlainText("Label", "Jack"); clipboardManager.setPrimaryClip(clipData); ~~~ 第9步中橙色部分的程序替換為: ~~~ ClipData clipData = clipboardManager.getPrimaryClip();//從剪切板中獲取數據 Item item = clipData.getItemAt(0); textView.setText(item.getText().toString()); ~~~ 13、如果我們想在剪切板中傳遞復雜數據,比如一個對象:先建一個類“MyData”,并使其實現“serializable”接口(在Superclass選項里): 14、在新建類中添加成員“name”、“age”并提供構造方法,代碼如下: ~~~ import java.io.Serializable; public class MyData implements Serializable { private String name; private int age; @Override public String toString() { return "MyData [name=" + name + ", age=" + age + "]"; } public MyData(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ~~~ 15、進入“Main.java”,將原來添加的代碼注釋掉,然后實例化一個MyData對象,代碼如下(用到了Base64工具類): ~~~ package com.android.myintent; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import android.os.Bundle; import android.app.Activity; import android.content.ClipData; import android.content.ClipData.Item; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.util.Base64; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Main extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 從Android系統中調用剪切板的服務 // ClipboardManager clipboardManager = (ClipboardManager) // getSystemService(Context.CLIPBOARD_SERVICE); // 向剪切板添加數據 // ClipData clipData = ClipData.newPlainText("label", "Jack"); // clipboardManager.setPrimaryClip(clipData); // Intent intent = new Intent(Main.this, OtherActivity.class); // startActivity(intent); MyData myData = new MyData("Jack", 23); // 將對象轉換為字符串 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); String base64String = ""; try {// 捕獲異常 ObjectOutputStream objectOutputStream = new ObjectOutputStream( byteArrayOutputStream); objectOutputStream.writeObject(myData); base64String = Base64.encodeToString( byteArrayOutputStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); } catch (Exception e) { // TODO: handle exception } ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipData clipData = ClipData .newPlainText("label", base64String); clipboardManager.setPrimaryClip(clipData); Intent intent = new Intent(Main.this, OtherActivity.class); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } ~~~ 16、進入“OtherActivity.java”,修改代碼如下: ~~~ package com.android.myintent; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.ClipData.Item; import android.os.Bundle; import android.util.Base64; import android.widget.TextView; public class OtherActivity extends Activity { private TextView textView; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); textView = (TextView) this.findViewById(R.id.msg); ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipData clipData = clipboardManager.getPrimaryClip();// 從剪切板中獲取數據 Item item = clipData.getItemAt(0); String msgString = item.getText().toString(); byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( base64_byte); try { ObjectInputStream objectInputStream = new ObjectInputStream( byteArrayInputStream); MyData myData = (MyData) objectInputStream.readObject(); textView.setText(myData.toString()); } catch (Exception e) { // TODO: handle exception } } public OtherActivity() { // TODO Auto-generated constructor stub } } ~~~ Ps:未完待續~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看