0
  • 表示アクティビティを開始する前に、最初にいくつかの設定を行う必要があるアプリを作成しています。設定ファイル(これらの設定を含む)が存在するかどうかをアプリで確認し、存在する場合は特定のアクティビティに移動するか、メインアクティビティに残ります(設定アクティビティが私のメインアクティビティであるため)。

  • 起動時にstartactivty()を使用しようとしましたが、表示アクティビティに進む前に、設定メニューがほんの一瞬表示されます。

  • どうすればいいですか?

    次のコードを試しました。

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);          
            SharedPreferences prefsfile = getSharedPreferences("myfile",0); 
    
            if( prefsfile!=null & Timetablledisplay.flag==0){
                Intent i=new Intent(ProjectBunkitActivity.this,Timetablledisplay.class);
                startActivity(i);
            }
    
4

2 に答える 2

2

必要なときにLAUNCHER Activity呼び出す前startActivity()に、新しいActivityプラス finish())を呼び出す必要があります。このようにして、レイアウトを膨らませようとする前に、新しいものが「舞台裏」で発売されます。onCreate()setContentView()Activity

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    SharedPreferences prefs = getSharedPreferences("myFile", 0); 

    if(prefs != null && ActivityOne.flag == 0) {
        Intent i = new Intent(this, ActivityOne.class);
        startActivity(i);
    } else {
        Intent i = new Intent(this, ActivityTwo.class);
        startActivity(i);
    }

    finish();
}
于 2012-06-26T13:26:10.530 に答える
1

この問題の潜在的な回避策のオプションは、わずかに異なるアプローチを取ることです。

[設定]を起動してから、Timetablleddisplayアクティビティに移動するかどうかを決定する代わりに、起動するアクティビティを決定するだけの空白のアクティビティから開始することができます。

アクティビティは次のようになります。

super.onCreate(savedInstanceState);      
    SharedPreferences prefsfile = getSharedPreferences("myfile",0); 

    if( prefsfile!=null && Timetablledisplay.flag==0){
        Intent i=new Intent(CURRENT.this,Timetablledisplay.class);
        startActivity(i);
        finish();
    }
    else
    {
        Intent i=new Intent(CURRENT.this,ProjectBunkitActivity.class);
        startActivity(i);
        finish();
    }
于 2012-06-26T13:17:40.717 に答える