ذخیره اطلاعات و نمایش آن در 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
- 2k بازدید
- 0 تشکر