2017-09-25 2 views
0

Hallo Ich habe ein Problem mit OnClickListenerkann OnClickListener in parcable schreiben?

View.OnClickListener listener= new View.OnClickListener() 
{ 
@Override 
public void onClick(View view) 
    { 
    Toast.makeText(Conversations.this, "click on MSG", 
      Toast.LENGTH_SHORT).show(); 
    } 
}; 

================================== ==================================

Ich brauche diesen Hörer in Fragment, die wird parzellierbar. Ich Parser nicht Listener, aber nach Readvalue ist null und wenn klicken App Crasher, weil es Referenz auf Null-Objekt ist.

Jetzt muss ich einige Methoden finden, die zum Speichern und Lesen von Objekt (View.OnClickListener) verwenden können, wenn parcable oder etwas ähnliches. Ohne diesen Ich brauche mein Projekt neu :(

mir bitte helfen.

Dank

_______________________________________________________--

ich nicht Fragment in Fragmente haben habe ich alle Fragmente in „extra setzen will "und in anderer Aktivität von zusätzlichen erfahren ..

Intent i= new Intent(Conversations.this,MessagesSingleFragmentActivity.cla‌​ss); i.putExtra("Fragment1", (Parcelable) recycleMessage); startActivity(i);

und in anderen Aktivitäten haben

Intent extras = getIntent(); Fragment fragment = (Fragment) extras.getParcelableExtra("Fragment1"); fm.beginTransaction().replace(R.id.fragment_container, fragment).commit(); 

Antwort

0

Nein, Sie nicht als Parcel passieren OnClickListener kann aber, wenn Sie klicken von einem Fragment zu einem anderen beobachten wollen, dann müssen Sie das Onclick in der zweiten Fragment implementieren.

FragA.java: // die OnClickListener haben

Runnable run; 

public void setClick(Runnable run){ 
    this.run = run; 
} 

view.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v){ 
     // do something in onclick 
     if(run!=null){run.run();} 
    } 
}); 

FragB.java:

((FragA)getParentFragment()).setClick(
     new Runnable() { 
      @Override 
      public void run() { 
       // do something in other fragment 
      } 
     } 
) 

Aktualisiert:

Wenn Sie etwas onClick ausführen möchten von Act ivityA auf ACTIVITYB, dann EventBus sind die besten Optionen für die Verwendung Otto oder EventBus von GreenBot

+0

Ich habe kein Fragment im Fragment Ich will alle Fragmente in "extra" und in anderen Aktivitäten lesen von extra .. Intent i = neue Absicht (Conversations.this, MessagesSingleFragmentActivity.class); i.putExtra ("Fragment1", (Parcelable) recycleMessage); startAktivität (i); und in anderen Aktivitäten haben Intent Extras = getIntent(); Fragmentfragment = (Fragment) extras.getParcelableExtra ("Fragment1"); fm.beginTransaktion().replace (R.id.fragment_container, Fragment) .commit(); – trip08

+0

Fragmente haben keine zusätzlichen, übergeben Sie ein Argument im Fragment –

+0

Ich übergebe Fragment in Extra bei Anrufaktivität. aber wenn ich in Fragment OnClickListener bin, weiß ich nicht, wie parcable es. – trip08

0

Es wird empfohlen, zwischen den Fragmenten über Aktivität zu interagieren .. oder allgemeiner durch die Schnittstelle, die Aktivität auf entspricht.

Noch eine Sache: Wenn Sie in beiden Fragmenten eine gemeinsame Funktionalität haben, ist es vielleicht besser, sie in Activity zu extrahieren?

Verwandte Themen