2017-06-10 4 views
1

主な問題:スクリーンショットが発生した後にUIを更新する必要があります。 BroadcastReceiverからUIを更新する方法

MainActivity.javaでonResume()でBroadcastReceiverをプログラムで作成しようとしましたが、何らかの理由でスクリーンショットを取得しませんでした。 したがって、マニフェストで宣言されたBroadcastReceiverを試してみましたが、スクリーンショットを正しく取得しましたが、UIを更新できません。

java.lang.RuntimeException: Unable to instantiate receiver com.patmyron.blackbox.MainActivity$MyReceiver: java.lang.InstantiationException: java.lang.Class<com.patmyron.blackbox.MainActivity$MyReceiver> has no zero argument constructor 

私はMyReceiverの内部findViewById()を使用しようとすると、私はエラーを取得:

の活動の内部クラスとしてのAndroidManifest.xmlで定義されて

BroadcastReceiverは静的でなければならないか、私はこのエラーを取得します

:ここ
Non-static method 'findViewById(int)' cannot be referenced from a static context 

は、私が現在持っているコードです。BroadcastReceiverはAndroidManifest.xmlをで宣言さ:MainActivity内

<receiver android:name=".MainActivity$MyReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE" /> 
      <data android:scheme="file" /> 
     </intent-filter> 
    </receiver> 

BroadcastReceiverクラス:

public static class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.e("this works", "SCREENSHOT"); 
     // ((TextView) findViewById(R.id.tv13)).setText("SCREENSHOT"); 
    } 
} 

答えて

関連する問題