ذخیره اطلاعات و نمایش آن در Clipboard در اندروید
پنجشنبه 19 اسفند 1395در این مقاله قصد داریم که یک رشته ای را در تکست بنویسم و با یک دکمه آن را در 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(); } });
در قسمت بالا مقداری که در حافظه ذخیره شده است را گرفته است حالا آن را در کلیپ بورد ذخیره کرده است و داخل تکست باکس نمایش داده می شود:
خروجی به صورت خواهد بود:
- Android
- 1k بازدید
- 0 تشکر