ذخیره اطلاعات و نمایش آن در Clipboard در اندروید

پنجشنبه 19 اسفند 1395

در این مقاله قصد داریم که یک رشته ای را در تکست بنویسم و با یک دکمه آن را در clipboard ذخیره کنیم و بعد از آن با دکمه ی دیگر در جای دیگر کپی نماییم در واقع متن ذخیره شده در حافظه موقت کیبورد باقی می ماند.

ذخیره اطلاعات و نمایش آن در Clipboard در اندروید

ابتدا در قسمت layout قطعه کد زیر را بنویسید:

<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">

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView"
            android:src="@drawable/ic_launcher"
            android:layout_below="@+id/tv1"
            android:layout_centerHorizontal="true"/>

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Copy text"
            android:id="@+id/button"
            android:layout_marginEnd="37dp" android:layout_below="@+id/editText2"
            android:layout_toStartOf="@+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_toEndOf="@+id/imageView"
            android:layout_marginStart="30dp"/>
    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText2"
            android:hint="paste text"
            android:layout_below="@+id/editText" android:layout_alignEnd="@+id/button2"/>
    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText"
            android:hint="Copy text"
            android:layout_alignParentTop="true" android:layout_alignEnd="@+id/editText2"/>

</RelativeLayout>

حالا برای قسمت کلاس از قطعه کد زیر استفاده نمایید:

import android.app.Activity;
import android.os.Bundle;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    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();
            }
        });
    }

}

در اینجا ابتدا دکمه ها و تکست تعریف شده است، برای clipboard از خود آن یک شی ایجاد کردیم و بعد از آن آمدیم برای دکمه ها رویداد را نوشتیم رویداد دکمه کپی به صورت زیر است:

     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();
            }
        });

در قسمت بالا مقداری که در حافظه ذخیره شده است را گرفته است حالا آن را در کلیپ بورد ذخیره کرده است و داخل تکست باکس نمایش داده می شود:

خروجی به صورت خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید