如何将复制的文本传递给Android中的其他活动

Posted

技术标签:

【中文标题】如何将复制的文本传递给Android中的其他活动【英文标题】:How to pass copied text to other activity in Android 【发布时间】:2012-05-20 15:20:11 【问题描述】:

我正在开发一个可以在 android 3+ 上运行的字典应用

Activity1 中,有一个 EditText 框,用户可以在其中输入他/她想要查找的单词。然后使用 Webview 在 Activity2 中显示单词的含义。

我知道在 Android 3+ 中,用户可以长按网页视图上的项目并将其复制到剪贴板。因此,我正在考虑在 Activity2 中添加一个按钮来处理复制到剪贴板的任何文本。澄清一下,我希望当单击此按钮时,将调用 Activity1 并将复制的文本自动粘贴到其 EditText 框中(用于查找)

我如何以编程方式做到这一点?

如果您能提供示例和/或教程,我将不胜感激。非常感谢您提前。

【问题讨论】:

非常感谢你们的帮助,伙计们。但是对不起我的无知,没有人提到如何传递Activity2中复制的单词,当前在剪贴板中,并且必须发送到Activity1的EditText。有什么想法吗? 你复制到剪贴板的单词,它会存储在String,对吧?只要您有特定的String 供您使用,您就不需要访问剪贴板内容。 【参考方案1】:

使用意图将您的值从活动 1 传递到活动 2

Intent i = new Intent(Activity1.this,Activity2.class);
i.putExtra("MyValue", value);
startActivityForResult(i, ActDocument.DIALOG_DOCUMENTDETAIL);

在 Activity2 中

@Override
    public void onCreate(Bundle savedInstanceState) 
    //...
    Intent intent = this.getIntent();
    value = intent.getSerializableExtra("MyValue");
    //...

【讨论】:

【参考方案2】:

您可以使用共享首选项来存储字符串或其他值。 在按钮单击事件的另一个活动中,使用共享首选项获取字符串,然后将其设置到编辑文本中..

【讨论】:

【参考方案3】:

在活动 1 中:

SharedPreferences appSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
Editor prefsEditor = appSharedPrefs.edit();
prefsEditor.putString("word1", string1);
//so on for other 'n' number of words you have
prefsEditor.commit();

在活动 2 中:

SharedPreferences appSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
String meaning1 = appSharedPrefs.getString("word1", "meaning not found");
//so on for other 'n' number of words

【讨论】:

【参考方案4】:

在活动2中:点击按钮:

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

在活动 1 中:

Bundle bundle=getIntent().getExtras();
if(bundle !=null)

String name=bundle.getString("word");
EditText edttxt=(EditText)findViewById(R.id.edtboxtest);
edttxt.setText(name);

【讨论】:

非常感谢。但是 Eclipse 会抛出这个错误:05-12 15:09:55.064: E/AndroidRuntime(1437): java.lang.RuntimeException: Unable to start activity ComponentInfoniamh.nadict/niamh.nadict.Nadict: java.lang.NullPointerException。我猜它在调用 Activity1 时有问题。我把 Activity1 的东西放在 OnCreate 中。对吗?

以上是关于如何将复制的文本传递给Android中的其他活动的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从活动传递到 Android Studio 中的类?

将自定义 ListView 项传递给 Android 中的其他活动

如何在 Android 上将对象从一个活动传递到另一个活动? [复制]

将自定义ListView项目传递给Android中的其他活动

在android中将坐标传递给谷歌地图

如何使用单击事件和意图将当前日期从一个活动传递到android中的下一个活动