2017-10-22 3 views
0

Wie behandelt man klicken auf ScrollView in Fragment?Wie zu behandeln klicken ScrollView in Fragment?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".ExampleFragment"> 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/myScroll"> 
     </ScrollView> 

</FrameLayout> 

Und Fragment Ich versuche:

@Override 
public void onStart() { 
    super.onStart(); 

    ScrollView refresh = (ScrollView) getActivity().findViewById(R.id.myScroll); 
    refresh.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast toast = Toast.makeText(getActivity().getApplicationContext(), "TEST", Toast.LENGTH_LONG); 
      toast.show(); 
     } 
    }); 
} 

Aber nach passiert nichts klicken.

Jede andere Idee, um einen Klick auf ein Fragment zu behandeln? Dies muss kein ScrollView sein. Ich habe es auch für FragmentLayout versucht, aber es gibt viele Bugs zurück.

+1

Haben Sie das Debuggen durchgeführt? Funktioniert onclick korrekt? Läuft die Toast Show ordnungsgemäß, aber nicht auf Ihrem Bildschirm? Wo tritt der Fehler genau auf? – koksalb

Antwort

0

Der Grund für die OnClickListener von Scroll ignoriert wird erklärt here.

Sie könnten stattdessen einen onTouchListener hinzufügen.

refresh.setOnTouchListener(new View.OnTouchListener() { 
     /** 
     * Called when a touch event is dispatched to a view. This allows listeners to 
     * get a chance to respond before the target view. 
     * 
     * @param v  The view the touch event has been dispatched to. 
     * @param event The MotionEvent object containing full information about 
     *    the event. 
     * @return True if the listener has consumed the event, false otherwise. 
     */ 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Toast toast = Toast.makeText(getActivity().getApplicationContext(), "TEST", Toast.LENGTH_LONG); 
      toast.show();    
      return false; 
     } 
    }); 
0

Verwendung dieser Code in onCreateView

ScrollView refresh = (ScrollView) getActivity().findViewById(R.id.myScroll); 
refresh.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast toast = Toast.makeText(getActivity().getApplicationContext(), "TEST", Toast.LENGTH_LONG); 
     toast.show(); 
    } 
}); 
Verwandte Themen