如何将剪贴板中的文本发送到EditText框

时间:2012-08-07 11:02:08

标签: java android android-intent android-edittext android-activity

我的应用程序包含两项活动,目标是在Android 4或更高版本上运行。 活动1 显示Webview,活动2 包含Listview和EditText。

按下按钮后,我想以编程方式将活动1 的Webview中复制的任何文本发送/导出到活动2 的EditText。

为了说清楚,我的目的是创建一个按钮来收听复制到剪贴板的任何文本。按下按钮时,将调用活动2,并将剪贴板中的文本发送/粘贴到活动2的EditText(edtbox)

到目前为止,我已应用以下代码行:

活动1(点击按钮时):

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
clipboard.setText("Text to copy");
clipboard.getText();

Intent i = new Intent(Activity1.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("clipboard", "Android");
i.putExtras(bundle);   
startActivity(i);

活动2(在onCreate下):

Bundle bundle=getIntent().getExtras();
if(bundle !=null)
{
    String name=bundle.getString("clipboard");
    EditText edttxt=(EditText)findViewById(R.id.edtbox);
    edttxt.setText(name);
}

但是,活动2无法加载,Eclipse引发崩溃。我想我没有将剪贴板文本发送到活动2的EditText,但不知道该怎么做。

我想知道你们是否可以帮助我解决这个问题。非常感谢你提前。

=====

更新:

以下是Eclipse LogCat

2 个答案:

答案 0 :(得分:1)

我不明白为什么你不能这样使用....

 ====>At Activity 1

 Intent i = new Intent(Activity1.this, Activity2.class);
 //Bundle bundle=new Bundle();
 //bundle.putString("clipboard", "Android");
  i.putExtras("clipboard", "Android");
  startActivity(i);


 ====>At Activity 2
EditText edttxt=(EditText)findViewById(R.id.edtbox);//place edit text declaration out side of the Bundle Extras block
Bundle bundle=getIntent().getExtras();
if(bundle !=null)
{
  String name=bundle.getString("clipboard");
  edttxt.setText(name);
}

答案 1 :(得分:1)

试试这个::

活动1(点击按钮时):

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
clipboard.setText("Text to copy");
Sting cpytext = clipboard.getText();

Intent i = new Intent(Activity1.this, Activity2.class);
//Bundle bundle=new Bundle();
//bundle.putString("clipboard", cpytext);
i.putExtra("clipboard", cpytext);   
startActivity(i);

活动2(在onCreate下):

if(getIntent().hasExtra("clipboard")) {
     String name = (getIntent().getStringExtra("clipboard"));
     EditText edttxt=(EditText)findViewById(R.id.edtbox);
     edttxt.setText(name);
}