Android - Bảng tạm

Android cung cấp khung clipboard để sao chép và dán các loại dữ liệu khác nhau. Dữ liệu có thể là văn bản, hình ảnh, dữ liệu dòng nhị phân hoặc các kiểu dữ liệu phức tạp khác.

Android cung cấp thư viện ClipboardManager và ClipData và ClipData.item để sử dụng khuôn khổ sao chép và dán. Để sử dụng khuôn khổ clipboard, bạn cần đưa dữ liệu vào đối tượng clip, sau đó đưa đối tượng đó vào khay nhớ tạm trên toàn hệ thống.

Để sử dụng clipboard, bạn cần khởi tạo một đối tượng của ClipboardManager bằng cách gọi getSystemService()phương pháp. Cú pháp của nó được đưa ra dưới đây:

ClipboardManager myClipboard;
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

Sao chép dữ liệu

Điều tiếp theo bạn cần làm là khởi tạo đối tượng ClipData bằng cách gọi kiểu phương thức dữ liệu tương ứng của lớp ClipData. Trong trường hợp dữ liệu văn bản,newPlainTextphương thức sẽ được gọi. Sau đó, bạn phải đặt dữ liệu đó làm clip của đối tượng Clipboard Manager. Cú pháp của nó như sau:

ClipData myClip;
String text = "hello world";
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);

Đối tượng ClipData có thể có ba dạng này và các hàm sau được sử dụng để tạo các dạng đó.

Sr.No ClipData Form & Method
1

Text

newPlainText (nhãn, văn bản)

Trả về một đối tượng ClipData có đối tượng ClipData.Item đơn chứa một chuỗi văn bản.

2

URI

newUri (trình phân giải, nhãn, URI)

Trả về một đối tượng ClipData có một đối tượng ClipData.Item chứa một URI.

3

Intent

newIntent (nhãn, ý định)

Trả về một đối tượng ClipData có một đối tượng ClipData.Item chứa một Intent.

Dán dữ liệu

Để dán dữ liệu, trước tiên chúng ta sẽ lấy clip bằng cách gọi getPrimaryClip()phương pháp. Và từ cú nhấp chuột đó, chúng ta sẽ nhận được mục trong đối tượng ClipData.Item. Và từ đối tượng, chúng ta sẽ nhận được dữ liệu. Cú pháp của nó được đưa ra dưới đây:

ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();

Ngoài các phương pháp này, còn có các phương thức khác được cung cấp bởi lớp ClipboardManager để quản lý khung clipboard. Các phương pháp này được liệt kê bên dưới -

Sr.No Phương pháp & mô tả
1

getPrimaryClip()

Phương thức này chỉ trả về clip chính hiện tại trên khay nhớ tạm

2

getPrimaryClipDescription()

Phương thức này trả về mô tả của clip chính hiện tại trên khay nhớ tạm nhưng không phải là bản sao dữ liệu của nó.

3

hasPrimaryClip()

Phương thức này trả về true nếu hiện có một clip chính trên khay nhớ tạm

4

setPrimaryClip(ClipData clip)

Phương pháp này đặt clip chính hiện tại trên khay nhớ tạm

5

setText(CharSequence text)

Phương pháp này có thể được sử dụng trực tiếp để sao chép văn bản vào khay nhớ tạm

6

getText()

Phương pháp này có thể được sử dụng trực tiếp để lấy văn bản đã sao chép từ khay nhớ tạm

Thí dụ

Đây là một ví dụ minh họa việc sử dụng lớp ClipboardManager. Nó tạo ra một ứng dụng sao chép cơ bản cho phép bạn sao chép văn bản và sau đó dán nó qua khay nhớ tạm.

Để thử nghiệm với ví dụ này, bạn có thể chạy trên thiết bị thực tế hoặc trong trình giả lập.

Các bước Sự miêu tả
1 Bạn sẽ sử dụng Android studio IDE để tạo ứng dụng Android và theo gói com.example.sairamkrishna.myapplication.
2 Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết.
3 Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng
4 Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả

Sau đây là nội dung của tệp hoạt động chính được sửa đổi src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
   EditText ed1, ed2;
   Button b1, b2;

   private ClipboardManager myClipboard;
   private ClipData myClip;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ed1 = (EditText) findViewById(R.id.editText);
      ed2 = (EditText) findViewById(R.id.editText2);

      b1 = (Button) findViewById(R.id.button);
      b2 = (Button) findViewById(R.id.button2);

      myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

      b1.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            String text;
            text = ed1.getText().toString();

            myClip = ClipData.newPlainText("text", text);
            myClipboard.setPrimaryClip(myClip);

            Toast.makeText(getApplicationContext(), "Text Copied", 
               Toast.LENGTH_SHORT).show();
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            ClipData abc = myClipboard.getPrimaryClip();
            ClipData.Item item = abc.getItemAt(0);

            String text = item.getText().toString();
            ed2.setText(text);

            Toast.makeText(getApplicationContext(), "Text Pasted", 
               Toast.LENGTH_SHORT).show();
         }
      });
   }

}

Sau đây là nội dung sửa đổi của xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
   
   <TextView android:text="Example" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Copy text"
      android:layout_below="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:hint="paste text"
      android:layout_below="@+id/editText"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Copy text"
      android:id="@+id/button"
      android:layout_below="@+id/editText2"
      android:layout_alignLeft="@+id/editText2"
      android:layout_alignStart="@+id/editText2" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Paste text"
      android:id="@+id/button2"
      android:layout_below="@+id/editText2"
      android:layout_alignRight="@+id/editText2"
      android:layout_alignEnd="@+id/editText2" />
      
</RelativeLayout>

Sau đây là nội dung của res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Sau đây là nội dung của AndroidManifest.xml tập tin.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.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>
   </application>

</manifest>

Hãy thử chạy một ứng dụng mà chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo raAVDtrong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào

biểu tượng Chạy từ thanh công cụ. Trình cài đặt Android studio sẽ hiển thị các hình ảnh sau:

Bây giờ chỉ cần nhập bất kỳ văn bản nào vào trường Văn bản để sao chép và sau đó chọn nút sao chép văn bản. Thông báo sau sẽ được hiển thị như hình dưới đây -

Bây giờ chỉ cần nhấn nút dán, và bạn sẽ thấy văn bản được sao chép hiện được dán vào trường Văn bản được sao chép. Nó được hiển thị bên dưới -