2017-12-10 5 views
0

私のMainActivity XMLファイルでは、私はEditTextのidがeditsearchです。私はクリップボードのテキストを聞いて、私のアプリを開くためのサービスクラスを持っています。すべてがうまくいっていますが、私のアプリがサービスクラスから開いたときに私の編集検索にテキストを設定することはできません。サービスからアプリケーションを開くことができませんEditTextにテキストを設定することができません

findViewById私のサービスのonStartCommandメソッドでは機能しません。私はまた私のMainActivityクラスの静的プロパティとして私の期待どおりの結果を得ることができない私のeditsearch EditTextを定義しようとしました。ここで

package com.learn24bd.ad; 

import android.app.Service; 
import android.content.ClipboardManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.IBinder; 
import android.support.annotation.Nullable; 
import android.util.Log; 



public class MyServiceReceiver extends Service { 
    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.i("MySerivce","Service Started"); 
     final ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE); 
     clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { 
      public void onPrimaryClipChanged() { 
       String copiedText = clipboard.getText().toString(); 
       Log.i("Copied",copiedText); 

       /* here i want to setText to my editsearch 
        also tried with static property 
        MainActivity.editsearch.setText(copiedText); 
       */ 

       Intent i = new Intent(); 
       i.setClass(getApplicationContext(), MainActivity.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(i); 

      } 
     }); 
     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 
} 
+0

をフィードバックや編集テキストのようなUIコンポーネントをサービスで処理することはできません – BMacedo

+0

あなたのフィードバックに感謝します。問題を解決する方法は何ですか? –

+0

これを実装するサービスが本当に必要かどうか、またはedittextが存在するアクティビティにあるべきかどうかを検討する必要があります。後者がそうである可能性が非常に高い。 – BMacedo

答えて

1

サービスはUIを扱うには適していません、私のサービスクラスです。

代わりに、あなたのケースでは、MainActivityクラスのクリップボードの内容を渡す必要があります。

Intent i = new Intent(); 
i.setClass(getApplicationContext(), MainActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("clipboard_text", copiedText) 
startActivity(i); 

をそして、あなたの活動のテキストを受信して​​処理します:そのために、意図余分として渡す

String clipboardText = getIntent().getStringExtra("clipboard_text"); 

次に、あなたがあなたのEditTextにテキストを設定することができます。

editText.setText(clipboardText) 
関連する問題