0

私はAndroidアプリを開発しています。Activityを示すがありButtonます。
ボタンが押されるProgressDialogと表示され、その後ろProgressDialogに別のアクティビティが開くはずです。
ボタンがあるこのアクティビティ以外のアクティビティが必要です。どうすればこれを達成できますか?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.gamemenu);


    TextView tvStart = (TextView)findViewById(R.id.start);
    //TextView tvSettings = (TextView)findViewById(R.id.settings);
    TextView tvAbout = (TextView)findViewById(R.id.instruction);
    TextView tvExit = (TextView)findViewById(R.id.exit);

    tvStart.setOnClickListener(this);
    //tvSettings.setOnClickListener(this);
    tvAbout.setOnClickListener(this);
    tvExit.setOnClickListener(this);

}

public void onClick(View v) {

    switch(v.getId()){

    case R.id.start:

        ProgressDialog pd=new ProgressDialog(StartMenu.this);  
        pd=ProgressDialog.show(StartMenu.this,"Loading","Please Wait",false);  
        Handler handler=new Handler();
           Runnable gotologin=new Runnable() 
           {
           public void run() 
           {
            startActivity(new Intent(StartMenu.this,AndroidGame.class));
            finish();
           }
           };
           handler.postDelayed(gotologin, 3000);       
           pd.dismiss();    
        //   finish();     
          break;
     // Intent iStart = new Intent(getApplicationContext(), AndroidGame.class );
    //  startActivity(iStart);
    //  break;

    /*case R.id.settings:
        Intent iSettings = new Intent(getApplicationContext(), GameSettings.class );
        startActivity(iSettings);
        break;*/

    case R.id.instruction:
        Intent inInstructions = new Intent(getApplicationContext(), Instructions.class );
        startActivity(inInstructions);
        break;

    case R.id.exit:
        ((Activity)v.getContext()).finish();
        //this.finish();

        break;
    }

}
4

2 に答える 2

3

前のアクティビティに属するウィンドウの上にあるように、バックグラウンドで別のアクティビティをロードすることはできません。

あなたの場合、ボタンがクリックされたときに 2 番目のアクティビティを読み込むことをお勧めします。ただし、2 番目のアクティビティでは、必要な進行状況ダイアログを必要なだけ表示します。

于 2012-09-11T07:34:37.290 に答える
1

この方法で を表示ProgressDialogできますが、ProgressDialog.

ProgressDialog pd=new ProgressDialog(ActivityName.this);  
Button n=new Button(ActivityName.this);  
n.setOnClickListener(new OnClickListener() {  
@Override  
public void onClick(View v) {  

       pd=ProgressDialog.show(ActivityName.this,"Loading","Please Wait",false);  
       Intent i=new Intent(ActivityName.this,TargetActivityName.class)  
       startActivity(i);  
       pd.dismiss();    
       finish();     
   }  
});

ProgressDialog要件のためにしばらくクリックして表示したい場合は、 を使用しHandlerて、事前に決められた時間の後に新しいアクティビティをロードすることを実現できます。

ProgressDialog3 秒間保持するサンプル例は次のとおりです。

ProgressDialog pd=new ProgressDialog(ActivityName.this);  
Button n=new Button(ActivityName.this);  
n.setOnClickListener(new OnClickListener() {  
@Override  
public void onClick(View v) {  

   pd=ProgressDialog.show(ActivityName.this,"Loading","Please Wait",false);  

   Handler handler=new Handler();
   Runnable gotologin=new Runnable() 
   {
   public void run() 
   {
    startActivity(new Intent(ActivityName.this, TargetActivityName.class));
    finish();
   }
   };
   handler.postDelayed(gotologin, 3000);       
   pd.dismiss();    
   finish();     
  }  
});

必須の回答:

ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.gamemenu);


    pd=new ProgressDialog(StartMenu.this);   // Edited here


    TextView tvStart = (TextView)findViewById(R.id.start);
    //TextView tvSettings = (TextView)findViewById(R.id.settings);
    TextView tvAbout = (TextView)findViewById(R.id.instruction);
    TextView tvExit = (TextView)findViewById(R.id.exit);

    tvStart.setOnClickListener(this);
    //tvSettings.setOnClickListener(this);
    tvAbout.setOnClickListener(this);
    tvExit.setOnClickListener(this);

}

public void onClick(View v) {

    switch(v.getId()){

    case R.id.start:

         runOnUiThread(new Runnable() {

         @Override
           public void run() {
              pd=ProgressDialog.show(StartMenu.this,"Loading","Please Wait",false);  
              Handler handler=new Handler();
               Runnable gotologin=new Runnable() 
               {
                public void run() 
                {
                  startActivity(new Intent(StartMenu.this,AndroidGame.class));
                  finish();
                }
               };
              handler.postDelayed(gotologin, 3000);       
              pd.dismiss();    
              finish();  

            }
      });
      //     break;
     // Intent iStart = new Intent(getApplicationContext(), AndroidGame.class );
    //  startActivity(iStart);
    //  break;

    /*case R.id.settings:
        Intent iSettings = new Intent(getApplicationContext(), GameSettings.class );
        startActivity(iSettings);
        break;*/

    case R.id.instruction:
        Intent inInstructions = new Intent(getApplicationContext(), Instructions.class );
        startActivity(inInstructions);
        break;

    case R.id.exit:
        ((Activity)v.getContext()).finish();
        //this.finish();

        break;
    }

}
于 2012-09-11T07:40:35.720 に答える