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");
}
}