2016-04-11 14 views
0

Ich verwende Textview Text aus einer SQLite-Datenbank in Fragment. Jetzt möchte ich Textview aktualisieren, wenn SQLite-Datenbank aktualisiert wird. Ich verwende einen Alertdialog zum Aktualisieren der SQLite-Datenbank. Wenn ich auf die Schaltfläche zum Speichern klicke, wird die Datenbank aktualisiert, aber textview wird nicht aktualisiert, bis das Fragment erneut geladen wird.Update-Fragment von Dialogfragment

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    db = new DatabaseHandler(getActivity()); 
    user = db.getUserDetails(); 
    setHasOptionsMenu(true); 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflating view layout 
    View v = inflater.inflate(R.layout.fragment_profile, container, false); 

    proName = (TextView)v.findViewById(R.id.proName); 
    proChangePassword = (Button)v.findViewById(R.id.proChangePassword); 

    proName.setText(user.get("fname") + " " + user.get("lname")); 

    return v; 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.profile_edit: 
      profileEdit(); 
      return false; 
     default: 
      break; 
    } 

    return false; 
} 


private void profileEdit() { 
    final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    final View dialogView = inflater.inflate(R.layout.profile_edit, null); 
    dialogBuilder.setView(dialogView); 

    eFirstName = (TextInputLayout) dialogView.findViewById(R.id.pEditFirst); 
    eLastName = (TextInputLayout) dialogView.findViewById(R.id.pEditLast); 
    final Button pEditSave = (Button) dialogView.findViewById(R.id.pEditSave); 

    eFirstName.getEditText().setText(user.get("fname")); 
    eLastName.getEditText().setText(user.get("lname")); 

    dialogBuilder.setTitle("Profile Edit"); 
    final AlertDialog dialog = dialogBuilder.create(); 

    pEditSave.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String fname = eFirstName.getEditText().getText().toString(); 
      String lname = eLastName.getEditText().getText().toString(); 

      db.updateProfile(fname,lname); 
      Toast.makeText(getActivity(), "Your Profile is successfully updated.", Toast.LENGTH_SHORT).show(); 

      dialog.dismiss(); 
     } 
    }); 
    dialog.show(); 
} 

Wie wird das Fragment automatisch aktualisiert, wenn die Schaltfläche zum Speichern des Dialogs geklickt wird?

+0

na..abhi zu nhi –

Antwort

0

Sie können onResume von Fragment verwenden, um die Datenbank zu lesen und die Benutzeroberfläche zu aktualisieren. So Datenbankabfrage und Benutzer updation onCreate-onResume bewegen:

@Override 
public void onResume() { 
    super.onResume(); 
    db = new DatabaseHandler(getActivity()); 
    user = db.getUserDetails(); 
} 

Wenn Sie die Alert Dialog schließen, wird onResume genannt und die Daten werden aktualisiert.

1

Mit Interface-Konzept seiner möglichen Fragment in Aktivität laden auf dem Dialogfeld-Fragments Entlassen

1.Define Schnittstelle, die Methode, wie unter

public interface IdialogDismissFragmentReload { 
    public void onDismisClick(); 
    } 

2.en Fragment A extends Fragment implements IdialogDismissFragmentReload enthält diese ist der Ort, von dem aus Sie das Fragment aktualisieren werden

Fragment A extends Fragment implements IdialogDismissFragmentReload 
    interface 
    { 
    ...... 
    @Override 
    public void onClick(View v) { 
    FragmentB mFragmentB = new FragmentB(); 
    mFragmentB .setListener(this); 
    mFragmentB.show(getActivity().getSupportFragmentManager(),PreviewDialog"); 
} 

@Override 
public void onDismisClick() { 
    // write code you want to 
} 
} 

3.On entlassen, nennt es den Fragment AonDismisClick() methos whre Sie Ihren neuen Code schreiben können, können Sie auch erforderlichen Daten von B nach A passieren

3.FragmentB extends DialogFragment 
{ 
private IdialogDismissFragmentReload mIReminderAdded; 

public void setListener(IdialogDismissFragmentReload listener) { 
    mIReminderAdded = listener; 
    } 

........ 

@Override 
public void onClick(View v) { 
mIReminderAdded.onDismisClick(); 
getDialog().dismiss(); 
} 

} 
Verwandte Themen