0

私は現在、Androidアプリケーションの作成をゆっくりと進めていますが、新しいウィンドウを作成してそれに切り替える方法を学んでいます。これはすべてうまくいっていますが、小さな問題が 1 つあります。「戻る」ボタンを押すと、そのボタンだけが押されたときに戻ることを選択した場合でも、アプリケーションが閉じます。

@Override
public void onBackPressed() {
    finish();
    return;
}

私は何かを逃しましたか?

前もって感謝します。

編集

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{       
    // Handle item selection
    switch (item.getItemId())
    {
    case R.id.menuItem1:
        setContentView(R.layout.about);
        return true;
    case R.id.menuItem2:
        System.exit(0);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

編集2:About.java

package weather.right;

import weather.right.now.R;
import android.os.Bundle;

public interface About {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.about);
    }

}
4

1 に答える 1

1

Intents「ウィンドウの切り替え」に使用する必要があります。「ウィンドウ」はActivityAndroidではと呼ばれ、の呼び出しでメソッドActivityを使用してのビジュアルコンテンツを設定します。setContentView()onCreate()Activity

Activity現在のから別のを起動するには、いくつかのパラメータを使用してをActivity作成し、それを使用して呼び出します。次に例を示します。IntentstartActivity()Intent

Intent i = new Intent(this, TheNextActivity.class);
startActivity(i);

ActivityAndroidマニフェストファイルに2番目を含めることを忘れないでください。アプリケーションのすべてActivitiesがそのファイルに含まれている必要があります。

その他の注意点はSystem.exit()、Androidでは実際には使用しないということです。だけお電話finish()ください。自分で行うのではなく、Androidにアプリケーションとそのリソースを管理させることをお勧めしますが、アプリケーションが実際にシャットダウンされていることを確認したい場合は、System.exit()とにかく自由に使用してください。onBackPressed()を呼び出すだけの場合は、オーバーライドする必要もありませんfinish()。これは、戻るボタンを押したときのAndroidの標準的な動作です。

setContentView()また、 1回につき2回以上電話をかけることはありませんActivityActivityビジュアルを変更する必要がある場合(または専用ウィジェットの1つを使用してレイアウトを切り替える必要がある場合は、新しいウィジェットを開始します。

これは、「問題」が発生している理由も説明しています。Activityusingのレイアウトを変更した可能性がありますが、実行setContentView()中のファイルは1つだけです。Activityを呼び出すとfinish()Activity閉じられます。あなたがすることになっているように、あなたが別のレイアウトで秒を始めていたならばActivity、Androidはその秒を閉じて、Activityあなたを最初に戻したでしょう。

于 2012-04-04T00:07:18.853 に答える