小编dwv*_*ldg的帖子

在 Fragment 中使用 Kotlin ViewBinding 时出现 NullPointerException

我正在尝试使用 Kotlin 视图绑定向片段内的按钮添加单击侦听器。我正在方法中设置点击侦听器onCreateView()。当我这样做时,我得到一个空指针异常,因为按钮尚未创建。我认为 Kotlin 视图绑定负责视图初始化,因此按钮不应该为空?

这是我的代码:

class FragmentStart : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.fragment_start, container, false)
        start_button.setOnClickListener(
            Navigation.createNavigateOnClickListener(R.id.action_fragmentStart_to_fragmentQuestion,null)
        )
        return view
    }
}
Run Code Online (Sandbox Code Playgroud)

这是例外情况:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception kotlin android-viewbinding

5
推荐指数
1
解决办法
9737
查看次数

两个 gettimeofday() 调用的差异给出负数

我正在尝试计算系统调用的平均开销,因此我重复执行 0 字节读取系统调用,并将平均开销计算为时间差除以迭代次数。但是,有时当我这样做时,我会得到一个负数。这是我的代码:

#include <unistd.h>
#include <stdio.h>
#include <sys/time.h>
#define NUM_ITER 1000000
#define NUM_EPOCHS 10

int main(){
    char buf[1];
    struct timeval tv1, tv2;
    for(int i = 0; i<NUM_EPOCHS; i++){
        gettimeofday(&tv1, NULL);
        for(int j = 0; j < NUM_ITER; j++)
            read(0, buf, 0);
        gettimeofday(&tv2, NULL);
        float time_of_sys_call = (float)(tv2.tv_usec - tv1.tv_usec) / NUM_ITER;
        printf("Avg cost of system call: %fms\n", time_of_sys_call);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是示例输出:

Avg cost of system call: 0.199954ms
Avg cost of system call: 0.213105ms
Avg cost of system call: 0.203455ms …
Run Code Online (Sandbox Code Playgroud)

c time system-calls

3
推荐指数
1
解决办法
117
查看次数