2

Meine App funktioniert gut, aber mein Zweck ist, dass, wenn ich die App schließe, sie dann erneut ausführen, meine App bei der letzten Aktivität geöffnet wird. Ich will, wenn ich wieder Hauptaktivität öffne, um zu zeigen, und wenn ich geklickt habe, dann die letzte Aktivität öffnen. So habe ich 4 ActivityMain Activity (my main) genannt, p1, p2, p3:Wie kann in der letzten Aktivität mit der Schaltfläche fortsetzen?

Hauptaktivität:

public class MainActivity extends Activity { 



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



     Button resume=(Button)findViewById(R.id.resume); 
     Button next=(Button)findViewById(R.id.next); 
     Button exit=(Button)findViewById(R.id.exit); 

     resume.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       if (!isTaskRoot() 
         && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) 
         && getIntent().getAction() != null 
         && getIntent().getAction().equals(Intent.ACTION_MAIN)) { 

        finish(); 
        return; 
       } 


      } 
     }); 

     next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this, p1.class); 
       startActivity(intent); 
      } 
     }); 

     exit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       moveTaskToBack(true); 
       android.os.Process.killProcess(android.os.Process.myPid()); 
       System.exit(1); 

      } 
     }); 


    } 
} 

XML-Layout:

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

    <Button 
     android:text="resume" 
     android:layout_width="wrap_content" 
     android:id="@+id/resume" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:text="next" 
     android:id="@+id/next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/exit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="exit"/> 
</LinearLayout> 

p1:

public class p1 extends AppCompatActivity { 

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

     Button next = (Button) findViewById(R.id.next); 
     Button home=(Button)findViewById(R.id.home); 

     next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent=new Intent(p1.this,p2.class); 
       startActivity(intent); 

      } 
     }); 

     home.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent=new Intent(p1.this,MainActivity.class); 
       startActivity(intent); 

      } 
     }); 

     } 
    } 

p1 XML-Layout :

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

    <Button 
     android:text="next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/next"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="page 1"/> 
    <Button 
     android:text="go in main" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/home"/> 

</LinearLayout> 

und p2, p3 wie p1

zum Beispiel: wenn ich in p2 bin dann in go klicken, um Haupt- und in Haupt wenn Ausfahrt klicken und meine app läuft wieder, in p2 meine app offen ich will Wenn ich app Hauptaktivität geöffnet habe, wenn ich auf "Weiter" geklickt habe, dann kommt p2 zum Anzeigen.

Anruf unter Methode

Antwort

2

Haupttätigkeit zu öffnen, wenn Relaunch sollten Sie

private void FinishActivity(){ 
this.finish(); 
} 

in Ihrem onClick Ereignisse rufen nach startActivity(intent);

für Ihre Aktivität speichert aktuelle Aktivitätsklasse als String auf gemeinsame Vorliebe wieder aufnehmen in Ihrem Code vor moveTaskToBack(true);

private void storeCurrentActivity(){ 
     SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF",   Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = myPref.edit(); 
     editor.clear(); 
     String packageName = this.getPackageName(); 
     String className = this.getClass().getSimpleName(); 
     editor.putString("lastactivity",packageName+"."+className); 
     editor.commit(); 
} 

und speichert das Ergebnis in einen gemeinsamen Vorliebe

, wenn Sie Rückkehr auf Ihre Bewerbung nur die SharedPreference überprüfen

Verwendung unter Code in Ihrer Haupttätigkeit nach setContentView(R.layout.main_page);

String lastActivity= getLastActivity(); 
try { 
      Intent fooActivity = new Intent(this,Class.forName(lastActivity)) 
      startActivity(fooActivity) 
    } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } 

Ort dieser Methode in Ihrem MainActivity

private String getLastActivity(){ 
        SharedPreferences myPref = = getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
        String lastActivity= myPref.getString("lastactivity",""); 

     } 

dies kann Ihnen helfen

Lösung für dieses spezifische Problem

Ersetzen Sie Ihre Aktion Home-Button mit folgenden Code

home.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent=new Intent(p1.this,MainActivity.class); 
       startActivity(intent); 
       storeCurrentActivity(); 
       this.finish(); 

      } 
     }); 

der obige Code Ihre actiivty gespeichert werden, das heißt, wenn Sie in der Aktivität p1 sind, wird es p1 speichern als letzte Aktivität

auch onResume Aktion

+0

u kann es von meinem Code erklären? also lege ich private active store Aktuelle Aktivität in meinem Hauptknopf an? und andere codes ... sag mir einfach, wo ich diesen code in meinem code benutzen soll, danke danke – erfan

+0

du solltest 'storeCurrentActivity()' die ganze zeit anrufen, wenn du aus deiner anwendung gehst. –

+0

dieser Code nichts für mich – erfan

0

ich werde die Re Clifford verwenden entfernen, bitte sponse, eine Lösung für dich vorzuschlagen, da du seine Antwort nicht verstehen konntest, obwohl es mir sehr klar war.

Die oben beschriebene Methode speichert die Aktivität auf SharedPreferences

private void storeCurrentActivity(){ 
      SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = myPref.edit(); 
      editor.putString("lastactivity",this.getClass().getSimpleName()); 
      editor.commit(); 
} 

diese Methode Setzen Sie und rufen Sie ihn in allen onResume in jeder Aktivität, außer auf Haupt:

@Override 
    public void onResume(){ 
     super.onResume(); 
     storeCurrentActivity(); 
    } 

In Ihrem Lebenslauf Taste, einfach Rufen Sie die letzte gespeicherte Aktivität

resume.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     SharedPreferences myPref = getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
     String lastActivity= myPref.getString("lastactivity",""); 
     try { 
      Intent fooActivity = new Intent(this,Class.forName(lastActivity)) 
      startActivity(fooActivity) 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
}); 
+0

danke für die Beantwortung von Ismael, so dass ich nach Ihrem erklären, aber immer noch zwei Problem haben: 1) Wiederaufnahme-Taste funktioniert nicht. 2) wenn relaunch app Hauptaktivität (Hauptseite) nicht geladen nur laden letzte Aktivität, als ich war und geklickt, gehen Sie zu Haupt. – erfan

+0

zum Beispiel, wenn in p2 klicken Sie auf zum Haupt gehen und von der App verlassen. wenn relaunch app p2 zuerst geladen nicht hauptaktivität – erfan

+0

ich füge codes über deine antwort – erfan

0

also nach einigem versuchen das war meine a nswer meiner Frage
Haupttätigkeit:

public class MainActivity extends Activity { 


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



    Button resume = (Button) findViewById(R.id.resume); 
    Button next = (Button) findViewById(R.id.next); 
    Button exit = (Button) findViewById(R.id.exit); 


    resume.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String lastActivity= getLastActivity(); 

      try { 
       if(!lastActivity.equals("")) 
       { 
        Toast.makeText(getApplicationContext(),"previous activity :"+lastActivity, Toast.LENGTH_SHORT).show(); 
        Intent fooActivity = new Intent(MainActivity.this,Class.forName(lastActivity)); 
        startActivity(fooActivity); 
        MainActivity.this.finish(); 

       } else { 
        Toast.makeText(getApplicationContext(),"no previous activity !", Toast.LENGTH_SHORT).show(); 
       } 
      } catch (ClassNotFoundException e) { 
       e.printStackTrace(); 
      } 




     } 
    }); 
    next.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this, p1.class); 
      startActivity(intent); 
     } 
    }); 

    exit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_HOME); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     } 
    }); 
} 
private String getLastActivity(){ 
    SharedPreferences myPref = getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
    String lastActivity= myPref.getString("lastactivity",""); 

    return lastActivity; 
} 


} 

p1, p2, p3:

public class p1 extends Activity { 

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

      Button next = (Button) findViewById(R.id.next); 
      Button home=(Button)findViewById(R.id.home); 

      next.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Intent intent = new Intent(p1.this, p2.class); 
        startActivity(intent); 

       } 
      }); 

      home.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Intent intent=new Intent(p1.this,MainActivity.class); 
        storeCurrentActivity(); 
        startActivity(intent); 
        p1.this.finish(); 


       } 
      }); 

    } 
     private void storeCurrentActivity(){ 
      SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = myPref.edit(); 
      editor.clear(); 
      String packageName = this.getPackageName(); 
      String className = this.getClass().getSimpleName(); 
      editor.putString("lastactivity",packageName+"."+className); 
      editor.commit(); 
     } 


    }