0

Ich schaffe zwei Fragmente:Wie weiß man, welche Taste geklickt hat?

<fragment 
    android:name="BoxFragment" 
    android:layout_width="150dp" 
    android:layout_height="80dp" 
    android:id="@+id/box_fragment_1" 
    android:layout_below="@+id/box_fragment_2" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="42dp"  
    tools:layout="@layout/fragment_box" /> 

<fragment 
    android:layout_width="150dp" 
    android:layout_height="50dp" 
    android:id="@+id/box_fragment_2" 
    android:layout_centerVertical="true" 
    android:layout_alignParentStart="true"   
    tools:layout="@layout/fragment_box" /> 

Layout dieser Fragmente:

<ImageButton 
    android:layout_width="197dp" 
    android:layout_height="197dp" 
    android:id="@+id/ibPress" 
    android:layout_gravity="center" /> 

So registrieren i OnClickListener:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view= inflater.inflate(R.layout.fragment_box, container, false); 

    ImageButton imageButton= (ImageButton) view.findViewById(R.id.ibPress); 
    imageButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i(LOG_TAG,this.toString()); 
      //how to know,wich button clicked? 
      presenter.onButtonClick(...?); 
     } 
    }); 
    return view; 
} 

Also, ich will von dem, was Fragment Taste wissen, war gedrückt? Soll ich auf View in presenter.onButtonClick verweisen? Am Presenter möchte ich wissen, welche Taste gedrückt wurde und dann etwas arbeiten.

Vielen Dank!

+0

Sollte es auch für das zweite Fragment keine "name" -Tags geben? – 0X0nosugar

Antwort

3

Sie können Ihre presenter.onButtonClick() von presenter.onButtonClick(int fragmentId) oder presenter.onButtonClick(String fragmentTagName) dann in dieser Methode ändern switch case verwenden Sie die auf der ID-Tag oder von diesem bestimmten Fragmente basierend Aktion ausführen können.

1

Sie können die id der aktuell angeklickte Ansicht mit getId() erhalten. Siehe den folgenden Code.

Bitte lesen Sie die docs für weitere Informationen.

+1

Ich denke nicht, dass Admiral das meinte. Seine Anfrage ist anders. –

+0

@ShadabAnsari nicht so sicher..könnte ... Lass die OP antworten..wir warten bis dann ..: p – Lal