2017-05-03 2 views
-1

Ich muss eine Aktivität aus einer anderen Aktivität in Android-Anwendung neu laden. Diese zweite Aktivität ist ein Dialogfenster, und basierend auf dem Dialogfenster sollte die Basisaktivität den Inhalt aktualisieren. (Durch Klicken auf die Schaltfläche der Dialogaktivität)Aktualisieren Sie eine Aktivität aus einer anderen Aktivität Andorid

+3

Verwenden Sie 'startActivityForResult' in der ersten Aktivität? –

+0

yes.Ich habe startActivityForResult verwendet, um die zweite Aktivität zu initialisieren – zooha

+1

Ok, dann musst du nur 'onActivityResult' implementieren, um die" Refresh "-Dinge zu machen –

Antwort

0

Betrachten Sie A als eine Aktivität, die Sie neu laden möchten, und B ist eine andere Aktivität.

In diesem Fall rufen Sie einfach finish() , wenn Sie von A nach B bewegen, wenn Sie eine von nennen B es die Aktivität A wieder geladen werden.

0

Dialogfenster und Aktivität sind völlig unterschiedliche Dinge.

Es ist möglich, First Activity im Dialog zu aktualisieren. Sie können es über die Schnittstelle tun.

Hier ist eine einfache Lösung. In Ihrer ersten Aktivität implementiert einen Interface-Namen IRefreshInteface. Es ist Definition ist wie unten:

public interface IRefreshInteface(){ 
    public void doRefreshValue(String commandValue); 
} 

Nun, wenn Sie IRefreshInteface in Ihrer Tätigkeit implementieren Sie die Methode erhalten doRefreshValue(String commandValue) und schreiben hier Aktualisierungen.

@Override 
void doRefreshValue(String commandValue){ 
// Write refresh code here 
} 

Jetzt in Ihrem Dialog haben Sie Kontext Ihrer Aktivität. Mit diesem Kontextobjekt können Sie diese doRefreshValue(String commandValue) Methode einfach aufrufen. Hier ist der Beispielcode:

public AlertDialog displayMessage(Context context, String title, String message){ 
     AlertDialog.Builder builder = new AlertDialog.Builder(context); 
     builder.setTitle(title); 
     builder.setMessage(message); 
     LayoutInflater inflater = LayoutInflater.from(context); 
     final View v = inflater.inflate(R.layout.custom_view, null); 
     builder.setView(v); 
     shipText = (EditText)v.findViewById(R.id.shipNameEditText); 
     scientistNameText = (EditText)v.findViewById(R.id.scientistEditText); 
     scientistEmailText = (EditText)v.findViewById(R.id.emailEditText); 
     volumeText = (EditText)v.findViewById(R.id.volumeEditText); 
     colourText = (EditText)v.findViewById(R.id.colourEditText); 
     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       ((IRefreshInteface) context).doRefreshValue("YOUR_COMMAND"); 


      } 
     }); 
     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.cancel(); 
      } 
     }); 
     AlertDialog dialog= builder.create(); 
     dialog.show(); 
     Button tb = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
     tb.setOnClickListener(new CustomListener(dialog)); 

     return dialog; 
    } 

hier passiert Kontext der Aktivität zu displayMessage() Verfahren und Anrufaktivität Methode doRefreshValue mit dieser Art und Weise:

((IRefreshInteface) context).doRefreshValue("YOUR_COMMAND"); 

Für weitere Informationen besuchen here und here

Hoffnung Das wird dein Problem lösen. Entschuldigung für schlechtes Englisch :)

1

Laden Sie Ihre Aktivität neu.

context.startActivity(context.getIntent()); 
context.finish(); 
Verwandte Themen