フラグメントを格納するフレームのonTouchListenerを作成するにはどうすればよいですか? activity_mainファイルは、このフラグメントが呼び出された時点で既に表示されているので、私はinflateする必要はありません。フレーム自体を膨らませようとすると、「予想されるタイプレイアウトのリソース」エラーがスローされます。フレーム内のビューをontouchlistenerにする
ユーザーがボタンに触れてフラグメントをアクティブにすると、そのフラグメントがフレーム内で開かれます。フレームはまた、タッチイベントを聴くことができる必要があります。
これは、フラグメントのための私の断片とonCreateViewが今のようになります。ここでは
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
}
は私activity_mainです。私はこのフラグメントのためだけに、assignment_viewフレームを使用しようとしています。
<?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>
だから何が問題なのですか?あなたはタッチリスナーを設定しようとするが、それは動作しませんまたは何ですか? – azizbekian
私の投稿を更新しました。 –
フラグメントを開始する場所にコードを掲載できますか? – Gary99