Wie kann ich einen onTouchListener für einen Rahmen, der nur ein Fragment beherbergt? Ich muss eine activity_main-Datei nicht aufblasen, da sie zum Zeitpunkt des Aufrufs dieses Fragments bereits angezeigt wird. Wenn ich versuche, den Rahmen selbst aufzublasen, wird ein "erwartete Ressource vom Typ Layout" -Fehler ausgelöst.Machen Sie einen Blick in einen Rahmen ein ontouchlistener
Das Fragment wird aktiviert, wenn ein Benutzer eine Schaltfläche berührt und das Fragment im Rahmen geöffnet werden soll. Der Rahmen muss auch in der Lage sein, Berührungsereignisse zu hören. Diese
ist, was mein Fragment und onCreateView für das Fragment wie jetzt aussieht:
public class TeacherFragment extends Fragment {
public final String TAG = getClass().getSimpleName();
public void onAttach(Activity myActivity){
Log.v(TAG, "in TeacherFragment - onAttach, activity is: " + myActivity);
super.onAttach(myActivity);
}
/**
* This method will only be called once when the retained
* Fragment is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retain this fragment across configuration changes.
setRetainInstance(true);
}
/**
* This method will be called only when
* Fragment is attached and ready to display the view.
*/
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle SavedInstanceState){
if(container == null) {
Log.v(TAG, "container is null. No need to inflate.");
return null;
}
View v = container.findViewById(R.id.assignment_view);
v.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "onShortPress: " + event.toString());
Toast.makeText(getView().getContext(), "Testing Short click", Toast.LENGTH_SHORT).show();
return true;
}
public void onLongPress(MotionEvent event) {
Log.d(TAG, "onLongPress: " + event.toString());
Toast.makeText(getView().getContext(), "Testing Long click", Toast.LENGTH_SHORT).show();
}
});
return v;
} //end onCreateView
}
Hier mein activity_main ist. Ich versuche, den assignment_view-Rahmen nur für dieses Fragment zu verwenden.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_layout"
android:baselineAligned="false">
<FrameLayout
android:id="@+id/main_menu_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#FF0000"
android:layout_weight=".3">
</FrameLayout>
<FrameLayout
android:layout_width="8dp"
android:layout_height="match_parent"
android:background="#000000">
</FrameLayout>
<FrameLayout
android:id="@+id/assignment_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00BBFF"
android:layout_weight="8">
</FrameLayout>
</LinearLayout>
Also, was ist das Problem? Sie versuchen, Touch-Listener zu setzen, aber es funktioniert nicht oder was? – azizbekian
Ich habe meinen Beitrag aktualisiert. –
Können Sie Ihren Code dort veröffentlichen, wo Sie das Fragment starten? – Gary99