0

2 つの xml ファイルと 2 つの Java ファイルがあります。最初の xml にはいくつかのボタンがあり、そのうちの 1 つが EXIT です。Java ファイルで、onCreate に次のように記述します。

Button exitButton = (Button) this.findViewById(R.id.button_exit);
    exitButton.setOnClickListener(this);

次に、私が書いたコードをさらに下に:

@Override
public void onClick(View v) {
    switch (v.getId()) {

    case R.id.button_exit:
        Intent switchtoExit = new Intent(StartActivity.this, ExitActivity.class);
        startActivityForResult(switchtoExit, MESSAGE_REQUEST);
        break;
    }
}

2 番目の Java ファイルは、ExitActivity.java と呼ばれます。私が書いたマニフェストファイルで:

<activity android:name=".ExitActivity" 
            android:label="@string/exit_title"
            android:theme="@android:style/Theme.Dialog"/>

2 番目の xml ファイルをダイアログのようにポップアップさせるため。私の2番目のJavaファイルは(ダイアログのようにポップアップするもの)です:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class ExitActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_exit);

        Button noExitButton = (Button) this.findViewById(R.id.exit_no_button);
        noExitButton.setOnClickListener(this);
        Button yesExitButton = (Button) this.findViewById(R.id.exit_yes_button);
        yesExitButton.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.exit_no_button:
            Toast.makeText(this, "Good Choice :-D", Toast.LENGTH_SHORT).show();
            break;
        case R.id.exit_yes_button:
            Toast.makeText(this, "So sad... \nnice playing with you...", Toast.LENGTH_SHORT).show();
            break;
        //break;
        }
    }
}

私の2番目のJavaファイルには次のものがあります:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@color/red">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/exitTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/exit_body" 
            />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/exit_no_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/exit_no_button" 
                android:layout_weight="1.0"
                />

            <Button
                android:id="@+id/exit_yes_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/exit_yes_button" 
                android:layout_weight="1.0"
                />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

私がやりたかったのは、1 つのボタンでダイアログを閉じ、もう 1 つのボタンでアプリケーションを停止することです。私はfinish()を試しましたが、うまくいきました。しかし、onDestroy() メソッドを追加すると、1 つのボタンはアプリケーションを再起動し、もう 1 つのボタンはアプリケーションを閉じます。また、戻るボタンを押すとアプリケーションが閉じてしまいました。

誰でも次のことを実現する方法を説明できますか:

  1. ダイアログがポップアップし、戻るボタンを押すと、ダイアログが閉じますか?
  2. 終了ボタンを押すと、アプリケーションが閉じます。
  3. Stayボタンを押すと、ダイアログが閉じます。

ありがとう

4

1 に答える 1

0

あなたはこれを間違った方法でやっています。2 つ目のアクティビティを使用するのはやり過ぎです。AlertDialogBu​​ilder で簡単に作成できる AlertDialog を使用します。正と負のボタンを持つように設定します。唯一のアクティビティで終了を呼び出すポジティブ ボタンの OnClickListener を設定します。これで 1 つのアクティビティが作成され、ダイアログ クラス自体がポップアップとクローズを処理します。

于 2013-01-20T07:18:33.953 に答える