0

ユーザーが初めてアプリを実行したときに、アプリにチュートリアルが表示されます

        Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
             if (firstRun == true) {


                 Intent tut = new Intent(MainActivity.this, Tutorial.class);
                 startActivity(tut);
                 firstRun = false;

             }
         } 
    }, 200);

遅滞なく黒い画面が表示されるため、遅延しました(インターフェイスにロードする時間がありません)

しかし、そうするとTutorial.classが何度も開かれます。何が間違っていますか?

編集:

ここにいくつかのコードがあります。読むには長すぎるだけで、問題に関連しないため、すべてを貼り付けることはしません

このように設定を保存します

 @Override
protected void onStop(){
   super.onStop();

  // We need an Editor object to make preference changes.
  // All objects are from android.context.Context
  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putInt("Counter1", counter);
  editor.putInt("Counter2", counter2);
  editor.putBoolean("FirstRun", firstRun);
  editor.putString("Label1", label1S);
  editor.putString("Label2", label2S);

  editor.commit();
}
protected void onPause(){
    super.onPause();

   SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
   SharedPreferences.Editor editor = settings.edit();
   editor.putInt("Counter1", counter);
   editor.putInt("Counter2", counter2);

   editor.commit();
 }

onCreate(); 内でそれらを復元する方法は次のとおりです。

// Restore previous settings and data


    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    int counterRestored = settings.getInt("Counter1", 0);
    int counter2Restored = settings.getInt("Counter2", 0);
    boolean firstRunRestored = settings.getBoolean("FirstRun", true);
    String label1Restored = settings.getString("Label1", "Counter 1");
    String label2Restored = settings.getString("Label2", "Counter 2");
    counter = counterRestored;
    counter2 = counter2Restored;
    firstRun = firstRunRestored;
    label1S = label1Restored;
    label2S = label2Restored;
    renameLabel();
    calculateTotal();

これは私の 2 番目のアクティビティです。Tutorial.class

public class Tutorial extends MainActivity{

ImageButton  btnSkip, btnSkip2, btnNext, btnNext2;
RelativeLayout tutorial, tutPage1, tutPage2;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tutorial);


    btnSkip = (ImageButton) findViewById(R.id.btn_skip);
    btnNext = (ImageButton) findViewById(R.id.btn_next);
    btnSkip2 = (ImageButton) findViewById(R.id.btn_skip2);
    btnNext2 = (ImageButton) findViewById(R.id.btn_next2);
    tutorial = (RelativeLayout) findViewById(R.id.tutorial);
    tutPage1 = (RelativeLayout) findViewById(R.id.page1);
    tutPage2 = (RelativeLayout) findViewById(R.id.page2);


    btnSkip.setOnClickListener(new View.OnClickListener(){
        @Override
         public void onClick(View v) {
            finish();
        }
    });
    btnSkip2.setOnClickListener(new View.OnClickListener(){
        @Override
         public void onClick(View v) {
            finish();
        }
    });
    btnNext.setOnClickListener(new View.OnClickListener(){
        @Override
         public void onClick(View v) {
            tutPage1.setVisibility(View.GONE);
            tutPage2.setVisibility(View.VISIBLE);
        }
    });
    btnNext2.setOnClickListener(new View.OnClickListener(){
        @Override
         public void onClick(View v) {
            tutPage1.setVisibility(View.VISIBLE);
            tutPage2.setVisibility(View.GONE);
            tutorial.setVisibility(View.VISIBLE);
            finish();
        }
    });

}

}

4

2 に答える 2

1

試してみませんか

 if(firstRun){
     firstRun = false;
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
         public void run() { 
             Intent tut = new Intent(MainActivity.this, Tutorial.class);
             startActivity(tut);
         }
     } 
     }, 200);
 }
于 2012-08-10T19:35:04.833 に答える
0

の値はfirstRun、複数回の実行にわたって永続的に保存されることはありません。

この値をSharedPreferencesに保存して、アプリを閉じた後もその値を保持できるようにする必要があります。SharedPreferencesの使用方法に関するチュートリアルはここにあります

于 2012-08-10T20:45:02.607 に答える