2016-08-03 9 views
0

MainActivity、p1、p2、p3の4つのアクティビティがあります。アプリを再起動するとAndroidの共有設定が機能しない

私のアプリはうまくいきますが、アプリが強制的に停止またはフリックアップすると、アプリが再び開いたときに共有のパフォーマンスがクリアされ、再開ボタンがアプリを終了するようになります。
MainActivity:

public class MainActivity extends Activity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_page); 



     final Button resume = (Button) findViewById(R.id.resume); 
     Button next = (Button) findViewById(R.id.next); 
     Button exit = (Button) findViewById(R.id.exit); 


     resume.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       final String PREFS_NAME = "MyPrefsFile"; 

       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

       if (settings.getBoolean("my_first_time", true)) { 

        resume.setEnabled(false); 

        Log.d("Comments", "First time"); 


        settings.edit().putBoolean("my_first_time", false).commit(); 
       }else 
       { 

        MainActivity.this.finish(); 

       } 
      } 
     }); 

     next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this, p1.class); 
       startActivity(intent); 
      } 
     }); 

     exit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent intent = new Intent(Intent.ACTION_MAIN); 
       intent.addCategory(Intent.CATEGORY_HOME); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(intent); 
      } 
     }); 
    } 
    } 

のXml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:text="resume" 
     android:layout_width="wrap_content" 
     android:id="@+id/resume" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:text="next" 
     android:id="@+id/next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/exit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="exit"/> 
</LinearLayout> 

P1:

public class p1 extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.p1); 

     Button next = (Button) findViewById(R.id.next); 
     Button home=(Button)findViewById(R.id.home); 

     next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent intent = new Intent(p1.this, p2.class); 
       startActivity(intent); 

      } 
     }); 

     home.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       Intent intent = new Intent(p1.this, MainActivity.class); 
       startActivity(intent); 

      } 
     }); 

} 
    private void storeCurrentActivity(){ 
     SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=myPref.edit(); 
     editor.putString("lastactivity", p1.this.getClass().getSimpleName()); 
     editor.commit(); 

    } 
    @Override 
    public void onResume(){ 
     super.onResume(); 
     storeCurrentActivity(); 
    } 

} 

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:text="next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/next"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="page 1"/> 
    <Button 
     android:text="go in main" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/home"/> 

</LinearLayout> 

とP1、P2のようなP3。

+2

初のOnCreate関数: 'MyPrefsFile'と' APP_SHARED_PREFS':あなたは二つの異なる 'SharedPreferences'を使用しています。それ以外のもの: 'lastactivity'の値を設定していますが、それを元に戻すことはありません。 – Bobby

+0

私はちょうど私がコードを置くか編集する必要があります正確に教えてくれるようにしたい場合。私はアンドロイドで新しいと私は1週間でこれを修正するために毎日試してみてください。あなたが私の問題を解決できるかどうか教えてください。 – erfan

答えて

0

私は非共有のみの経験がありますが、0は間違った旗かもしれません!

getSharedPreferences(PREFS_NAME, 0); <-- Please use the Constant Context.MODE_WORLD_READABLE 
+1

私はSharedPreferences設定= getSharedPreferences(PREFS_NAME、MODE_WORLD_READABLE)を使用しています。しかし、まだこの問題があった – erfan

0

分析:あなたは再開ボタンを押した後

それはsetting["MyPrefsFile", "my_first_time"] = trueとして保存され、再開ボタンをされたが、現在のアクティビティインスタンスで無効になっています。

アクティビティが破棄されて再作成されると、再開ボタンは設定から​​初期化されないため、有効になります。あなたにこれを追加修正する

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0) 
resume.setEnabled(settings.getBoolean("my_first_time", true)); 
+0

私はこの2行を追加する:シンボルPREFS_NAMEエラーを解決できません! – erfan

関連する問題