2017-12-20 17 views
-1

私のアプリに問題があり、解決するために何をすべきかわかりません。私はAndroidには新しく、Javaについて理解していません。アプリを終了した後にアプリをダッシュ​​ボードに起動するにはどうすればよいですか?

アプリはリストを含む複数のページで構成されており、すべてがそれらのページ間を移動するためのスピナーを備えています。あなたはスピナーの項目を選択すると、そのページが開きます。ページ間を移動するだけでなく、スピナーには「Exit App」オプションがあります。

ページホッピングは問題ありません。私が持っている問題は、「Exit App」コードです。私のデバイスのホームキーを押してアプリケーションを終了するか、または(スピナーから)終了アプリケーションをタップしてアプリを再起動すると、ダッシュボードではなく、最後に表示されていたページが開きます。この問題を解決するには、デバイスのホームキーを長押しして、最近使用したリストからアプリをスワイプする必要があります。

デバイスのホームキーを押してアプリケーションを終了するか、またはスピンナーからExit Appをタップしてアプリを再起動すると、ダッシュボードにアプリが表示されますか?

誰でも手助けできますか?

ありがとうございました。

ストリング符号...以下のコードで

<string-array name="TheList"> 
    <item>Tap Here For List…</item> 
    <item>Cheese</item> 
    <item>Planets</item> 
    <item>Cars</item> 
    <item><b>Back To Dashboard…</b></item> 
    <item><b>EXIT APP</item> 
</string-array> 

ケース番号(1-4)スピナー項目選択で開くページです。

ケース5がアプリを終了します。私は、ダッシュボード上でアプリケーションが再起動されないようにするコードにエラーがあると想定しています。

Javaコード...

package com.example.acer.MyKitList; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.Spinner; 

public class Carrying extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.page1); 


    // Spinner element & Spinner click listener 
    Spinner Spinner = (Spinner) findViewById(R.id.Spinner1); 

    Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 


     @Override 
     public void onItemSelected(AdapterView<?> arg0, View view, int position, long row_id) { 

     switch (position) { 
      case 1: 
     Intent a = new Intent(Dashboard.this, Cheese.class); 
     startActivity(a); 
     finish(); 
     break; 
      case 2: 
     Intent b = new Intent(Dashboard.this, Planets.class); 
     startActivity(b); 
     finish(); 
     break; 
      case 3: 
     Intent c = new Intent(Dashboard.this, Cars.class); 
     startActivity(c); 
     finish(); 
     break; 
      case 4: 
     Intent d = new Intent(Dashboard.this, Dashboard.class); 
     startActivity(d); 
     finish(); 
     break; 

      case 5: 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(intent); 
     System.exit(0); 
     finish(); 

     } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    }); 
    } 

    @Override 
    public void onBackPressed() { 
    finish(); 
    } 
} 
+1

このアクティビティのデフォルトのライフサイクルです。ホームボタンを押すと、アクティビティがポーズ状態に戻り、アクティビティが再開します。私はあなたがデフォルトの動作で台無しになるとは思わない。 – ADM

+1

*私はAndroidを初めて使い、Javaを理解していません。* - 最初に経験を積んでみませんか?あなたがJavaを理解していない場合、あなたは遠くになることはありません –

+0

私は上記のように、あなたは活動のライフサイクルを混乱させるべきではありません。あなたができることは、Exit Appボタンを処理することです。 [This](https://stackoverflow.com/questions/6330260/finish-all-previous-activities)を読んでみてください。 – ADM

答えて

0

は、この問題をハード修正するあなたのクラスのすべて

@Override 
protected void onResume() { 
    super.onResume(); 
    //Start Dashboard Activity here 
    Intent a = new Intent(context, Dashboard.class); 
    startActivity(a); 
    finish(); 
    } 
} 

にこのスニペットを置きます。

+0

ありがとうアクア4。私は、ADMが与えたリンクから得たいくつかの行を見逃していました。これには、あなたのIntent =新しいIntent(コンテキスト、Dashboard.class); – Nodens

+0

@Nodensあなたの問題は修正されました:)私は親指を感謝し、答えを受け入れてください –

1

答え:

case 5: 
Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(startMain); 
Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
finish(); 
System.exit(0); 
関連する問題