1

私には4つのクラスがあると仮定します。各クラスには、あるページから別のページに画面を切り替えるためのボタンがあり、正常に機能していますが、最後のページのボタンをクリックしてすべてのアクティビティを閉じようとしています。でも、最後のページだけを閉じます。この概念を実現するにはどうすればよいですか?

参照用に私のコードを見つけてください

Xit_demoActivity.java

public class Xit_demoActivity extends Activity {
/** Called when the activity is first created. */

Button btn1; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn1 = (Button)findViewById(R.id.button_1);
    btn1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
    Intent myIntent = new Intent(v.getContext(), Class1.class);
    startActivity(myIntent);
        }
    });

Class1.java

public class Class1 extends Activity 
{

Button btn1;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    btn1 = (Button)findViewById(R.id.button_2);
    btn1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
    Intent myIntent = new Intent(v.getContext(), Class2.class);
    startActivity(myIntent);
        }
    });

Class2.java

public class Class2 extends Activity 
{

Button btn1;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);


    btn1 = (Button)findViewById(R.id.button_3);
    btn1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
    Intent myIntent = new Intent(v.getContext(), Class3.class);
    startActivity(myIntent);
        }
    });

Class3.java

public class Class3 extends Activity 
{
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main3);

    Button next = (Button) findViewById(R.id.button_4);
    next.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) 
    {
        Intent intent = new Intent();
        setResult(RESULT_OK, intent);
        finish();
        }
    });

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.and.roidu.xit"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".Xit_demoActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity><activity android:name=".Class1"></activity>

    <activity
        android:name=".Class1"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN1" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity><activity android:name=".Class2"></activity>



    <activity
        android:name=".Class2"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN2" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity><activity android:name=".Class3"></activity>

    <activity
        android:name=".Class3"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN3" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


 </application>

</manifest>

御時間ありがとうございます!..

4

4 に答える 4

5

これを試してみてください。Class3.javaあなたがあなたの最後であると考えてくださいActivitiyそして、以下のコードButtonnext使用されています-

Intent intent = new Intent(currentActivity.this, XitActivity.class); // instead of XitActivity use your first activity
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

そして、あなたXit_demoActivityonCreate()使用では以下のコード-

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}

これがあなたがすべての活動からあなたを抜け出すのに役立つことを願っています。

于 2012-07-11T10:06:31.777 に答える
1

すべてのアクティビティを終了し、この BaseActivity ですべてのアクティビティ クラスを拡張するときに通知する BroadCastReceiver を使用して BaseActivity を作成することを強くお勧めします。

public static final String ACTION_FINISH = "ACTION_FINISH";
public class BaseActivity extends Activity {

public void onCreate(Bundle bundle, int resourceId) {
    super.onCreate(bundle);
    registerReceiver(finishActivitiesReceiver, 
                                          new IntentFilter(ACTION_FINISH));
}

protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(finishActivitiesReceiver);
}

BroadcastReceiver finishActivitiesReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };
}

次に、すべてのアクティビティを閉じたいときにBroadCastを送信できます

sendBroadcast(new Intent(BaseActivity.ACTION_FINISH));
于 2012-07-11T10:19:57.263 に答える
0

これを行うべきではありません。ホーム画面や前のアプリ画面を開きたい場合。あなたは単に呼び出すことができます

moveTaskToBack(boolean bool);

アプリをバックグラウンドに送信します。または、class1 2 および 3 をスタックに含めたくない場合は、アクティビティのマニフェスト宣言で excludeFromRecent フラグを使用できます。

このスレッドは、同じ問題で何千ものビューを獲得しました。それを見て理解を深めます。

アプリケーションを終了することは眉をひそめていますか?

于 2012-07-11T10:09:15.030 に答える
0

クラス 3 のボタンをクリックすると、次のように記述します。

Intent intent=new Intent(Class3.this,Class1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-07-11T10:14:47.023 に答える