0

ブロードキャストレシーバで作業しているときに、共有レシピを使用してブロードキャストレシーバの結果をMainActivityに送信する問題に直面しています。
MainActivity.javaブロードキャストからの結果を返す方法SharedPreferencesを使用してReceiverからMainActivityへ

public class MainActivity extends AppCompatActivity { 
    private TextView mBatteryLevelText; 
    private ProgressBar mBatteryLevelProgress; 
    private BroadcastReceiver mReceiver; 
    RelativeLayout relativeLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mBatteryLevelText=(TextView)findViewById(R.id.battery_text); 
     mBatteryLevelProgress=(ProgressBar)findViewById(R.id.battery_progress); 
     //mReceiver=new BatteryLevelBroadcastReceiver(); 
     relativeLayout=(RelativeLayout)findViewById(R.id.main_background); 
    } 
    public void batteryLevelCheck(View view){ 
     IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     mReceiver=new MyBroadcastClass(); 
     registerReceiver(mReceiver,intentFilter); 
SharedPreferences sharedPreferences=context.getSharedPreferences(getString(R.integer.BATTERY_LEVEL),Context.MODE_PRIVATE); 
int level=Integer.parseInt(getString(R.integer.BATTERY_LEVEL),0); 
     if (level<=10){ 
      mBatteryLevelText.setText(getString(R.string.BATTERY_VERY_DANGER)+":"+level); 
      mBatteryLevelProgress.setProgress(level); 
      relativeLayout.setBackgroundColor(Color.RED); 
     } 
     if (level<=20){ 
      mBatteryLevelText.setText(getString(R.string.BATTERY_DANGER)+":"+level); 
      mBatteryLevelProgress.setProgress(level); 
      relativeLayout.setBackgroundColor(Color.YELLOW); 
     } 
     if (level<=10){ 
      mBatteryLevelText.setText(getString(R.string.BATTERY_OK)+":"+level); 
      mBatteryLevelProgress.setProgress(level); 
      relativeLayout.setBackgroundColor(Color.BLUE); 
     } 
     if (level<=10){ 
      mBatteryLevelText.setText(getString(R.string.BATTERY_FULL)+":"+level); 
      mBatteryLevelProgress.setProgress(level); 
      relativeLayout.setBackgroundColor(Color.GREEN); 
     } 
    } 

私は私が共有設定からこれを得ることができる方法SharedPreferences のための放送受信機のクラスからレベル、すなわち、現在のバッテリーレベルを取得したいです。 私は放送受信機のクラスでこれを得ることに結びつき、その価値を共有することは許されません。
MyBroadcastClass.java

public class MyBroadcastClass extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0); 
     SharedPreferences sharedPreferences=context.getSharedPreferences(getString(R.integer.BATTERY_LEVEL),Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=sharedPreferences.edit(); 
     editor.putInt("key1",level); 
     editor.commit(); 
     Toast.makeText(context.getApplicationContext(),"Broadcast Received",Toast.LENGTH_LONG).show(); 
    } 
} 

ここで共有好みスティング、また、こののgetString(R.string.BATTERY_LEVEL)を結ぶ 午前中に格納することができません。このint型のようなエラーが発生します。この

<resources> 
    <string name="app_name">BatteryLevelChecking</string> 
    <string name="BATTERY_VERY_DANGER">please charge your battery in danger level</string> 
    <string name="BATTERY_DANGER">Please charge your battery low</string> 
    <string name="BATTERY_OK">Battery ok to use your mobile</string> 
    <string name="BATTERY_GOOD">Battery is good</string> 
    <string name="BATTERY_FULL">Battery Full please unplug charger</string> 
    <integer name="BATTERY_LEVEL">10</integer> 

</resources> 

このような
私の値/ string.xmlをファイルにも同じエラーを与えます。 問題はここ
とどのように私は、文字列ファイルにint型の値を保存することができます

答えて

0

あなたの活動にSharedPreferences.OnSharedPreferenceChangeListenerを設定することができるものです。したがって、SharedPreferencesに変更がある場合は、あなたの活動の中で通知されます。参照https://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

+0

については

はMySharedPreferencesClass.javaでSharedPreferencesに整数ファイルを追加する時にエラーを取得していますが、一度このラインをチェックしてくださいます。 SharedPreferences sharedPreferences = context.getSharedPreferences(getString(R.integer.BATTERY_LEVEL)、Context.MODE_PRIVATE); – sreeku24

+0

なぜ "BATTERY_LEVEL"を整数にして文字列として取得しようとしていますか?そうすることのメリットは何ですか? 10このようにしてください。 – Nitesh

+0

stingの代わりに整数を使うのは良くないですか、少なくとも正しい方法です。 – sreeku24

関連する問題