我的片段中的一些视图具有恒定的功能,我如何编写该功能使其 运行 只有一次?
Some of the views in my fragment have a constant functionality, how can I code that functionality such that it is run only once?
例如:我的片段中有一个按钮,单击该按钮将显示一条消息,每次都相同。由于只有在 onCreateView() 方法 运行 之后视图才会膨胀,有没有办法让按钮的 onClickListener() 只初始化一次。
我建议使用 DataBinding 库来静态实现 onClick。
只传递应用程序上下文以防止内存泄漏!
如果您使烤面包机 class 成为非静态的,并使用“数据”中的“变量”标签将其作为参数传递给布局,那就更好了。
DataBinding 集成指南:
Android Developers
示例布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="path.to.Toaster"/>
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> Toaster.makeToast()}"/>
</FrameLayout>
</layout>
Toaster.class:
package path.to;
import android.content.Context;
import android.widget.Toast;
public class Toaster {
public static Context context;
public static void makeToast() {
Toast.makeText(context, "Just a toast!", Toast.LENGTH_SHORT).show();
}
}
例如:我的片段中有一个按钮,单击该按钮将显示一条消息,每次都相同。由于只有在 onCreateView() 方法 运行 之后视图才会膨胀,有没有办法让按钮的 onClickListener() 只初始化一次。
我建议使用 DataBinding 库来静态实现 onClick。
只传递应用程序上下文以防止内存泄漏! 如果您使烤面包机 class 成为非静态的,并使用“数据”中的“变量”标签将其作为参数传递给布局,那就更好了。
DataBinding 集成指南: Android Developers
示例布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="path.to.Toaster"/>
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> Toaster.makeToast()}"/>
</FrameLayout>
</layout>
Toaster.class:
package path.to;
import android.content.Context;
import android.widget.Toast;
public class Toaster {
public static Context context;
public static void makeToast() {
Toast.makeText(context, "Just a toast!", Toast.LENGTH_SHORT).show();
}
}