1

我将我的应用程序定位为使用 API 11 或更高版本。在活动 A 中,我使用以下代码行来捕获剪贴板中的文本并将其发送到活动 B(这是上一个活动)。

onCreate

wvContent = (WebView) findViewById(R.id.wvContent);
LinearLayout ll= (LinearLayout)findViewById(R.id.layout_view);  
    webkit=new Webkit(this);
    wvContent.addView(webkit, 0,0);    
    WebviewSelectedText webkitSelectedText=new WebviewSelectedText(getApplicationContext(), webkit);
    webkitSelectedText.init();      
    ll.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {               
            finish(); 
        }           
    });

以及复制的文本以触发活动 B(使用剪贴板中的文本返回上一个活动):

public class WebviewSelectedText
{
    private Context context;
    Webkit webkit;
    private final String have_word="have_word";     

    public WebviewSelectedText(Context context,Webkit webkit) 
    {
        this.context=context;
        this.webkit=webkit;
    }

    @SuppressWarnings("deprecation")
    public void init()      
    {
        final ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        clipboardManager.setText(null);
        setOnSelectTextListener(clipboardManager, webkit);
    }

    private void setOnSelectTextListener(@SuppressWarnings("deprecation") final ClipboardManager clipboardManager, final Webkit webkit) {
        webkit.setOnSelectTextListener(new OnSelectTextListener() {
            @SuppressWarnings("deprecation")
            public void onSelectText() {
                String text = clipboardManager.getText().toString();
                text = text.toLowerCase();
                //Remove all non-word elements starting and/or ending a string 
                String strippedInput = text.replaceAll("^\\W+|\\W+$", "");
                System.out.println("Stripped string: " + strippedInput);
                //receivedText = txtView.getText().toString().toLowerCase();
                if(strippedInput!=null) 
                {
                    Intent intent=new Intent(context,ActivityB);
                    intent.putExtra(have_word, strippedInput);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
                    ActivityA.this.startActivity(intent);
                } 
            }
        });

    }   

在模拟器上一切都很好,即复制文本,然后使用剪贴板中的文本调用活动 B。

但是,在我的真实设备(HTC 和平板电脑)上,带有复制文本的活动 B 不会自动启动,直到触摸软按钮(任何按钮:返回、菜单......)。

仅供参考,这是我的布局:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"   
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"  >
<LinearLayout
    android:id="@+id/layout_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical"
    android:layout_weight="1">

    <WebView  
        android:id="@+id/wvContent"
        android:layout_width="0dip" 
        android:layout_height="fill_parent"
        android:layout_gravity="top" 
        android:layout_weight="1"  
    />

</LinearLayout>
<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
>
    <ImageButton
        android:id="@+id/btnHome"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/home"
        android:layout_weight="0.25"
    />
    <ImageButton
        android:id="@+id/btnPronounce"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/pronounce"
        android:layout_weight="0.25" 
    />

    <ImageButton
        android:id="@+id/btnShowHistory"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/history"
        android:layout_weight="0.25"
    /> 
    <ImageButton
        android:id="@+id/btnAddFavourite"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/add_favourite"
        android:layout_weight="0.25" 
    />
</LinearLayout>   

我想知道您是否可以查看我的代码并告诉我问题所在。非常感谢。

4

0 回答 0