0

わかりましたので、これは単純に見えるかもしれませんが、私はそう思ったということです。しかし、基本的には、restartActivity メソッドでアクティビティを再開したいと考えています。

私が最初にしたことは、ボタンを作成し、xml にコード行を含めることでした。 android:onClick="restartActivity"

次に、私のクラスには restartActivity メソッドが含まれています

public void restartActivity()
{
    Intent intent= new Intent(this, MainActivity.class);
    startActivity(intent);
}

これを試してみると、最終的には動作が停止したダイアログボックスが表示されます。だから私の質問は、なぜこれが機能しないのかということです。正しいレイアウトで再起動ボタンを作成したことを確認し、必要な参照がすべて作成されていることを確認しました。Androidマニフェストはすべて正しいです。これらの2行を追加するまで、クラッシュし始めませんでした。また、ターゲット API が 8 であり、提案された回答の 1 つは API 11 以上であったことにも言及する必要があります。日食として「親切に」教えてください。

4

3 に答える 3

4

Activity クラスはすでにこのメソッドを提供しています:

 public void recreate ()

導入されたバージョン: API レベル 11 アクティビティが新しいインスタンスで再作成されます。これにより、構成の変更によりアクティビティが作成されたときと基本的に同じフローになります。現在のインスタンスはそのライフサイクルを経て onDestroy() になり、その後に新しいインスタンスが作成されます。

だから、あなたはこのようなことをすることができます、

public void Restart()
{
   this.recreate();
}

あなたが活動の外にいる場合は、単に:

public void Restart(Context ctx)
    {
       //geting activty from context
       Activity a = (Activity)ctx;
       //forcing activity to recrete
       a.recreate();
    }
于 2013-04-20T04:49:55.753 に答える
1

アクティビティ コンテキストを使用します。ボタンクリックでこれを参照しています。これは、あなたの場合はボタンである現在のコンテキストを指します。

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

これにより、同じアクティビティの新しいインスタンスが作成されます。

MainActivity があるとします。これは裏にあります

ボタンをクリックすると、同じアクティビティが開始され、finish() が呼び出されます

Intent t= new Intent(MainActivity.this,MainActivity.class);
startActivity(t);
finish();

編集:

あなたの最初の活動では、ボタンをクリックすると言います

Intent t= new Intent(FirstActivity.this,SecondActivity.class);
startActivity(t);
finish();

2番目のアクティビティでボタンをクリックします

Intent t= new Intent(SecondActivity.this,FirstActivity.class);
startActivity(t);
finish();
于 2013-04-20T04:49:37.783 に答える
0

あなたのクリックは好きか​​もしれません

 public void restartActivity(View view)
     {
         // do your work Here
         Intent intent= new Intent(currentActivity.this, MainActivity.class);
         startActivity(intent);
     }
于 2013-04-20T04:49:10.437 に答える