您好我已经设法将我的XML文件绑定到ViewPagerIndicator,将它们扩展为Fragments但我无法使用必要的findViewById代码将我的按钮引用到代码中。这是我的代码,因为有人可以提供帮助
package com.example.sliding;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class twoey extends Fragment {
Button lol;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.two, null);
return v;
lol = (Button) findViewById (R.id.button1);
}
}
但是我尝试做什么我无法得到 findViewById 这个词的小红色线可以有人帮忙吗?
答案 0 :(得分:3)
您的代码有2个错误:
return v;
必须是方法的最后一行,之后的任何行都无法运行! 无法访问,因此存在编译错误!
行lol = (Button) findViewById (R.id.button1);
需要lol = (Button) v.findViewById (R.id.button1);
,否则您将NullPointerException
,因为button1
是View v
的一部分,而不是活性。
正确的代码是:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.two, null);
lol = (Button) v.findViewById (R.id.button1);
return v;
}
答案 1 :(得分:0)
Java编译器根本无法访问return
语句后编写的代码。 return
表示你已经完成了这个方法,并且你从中返回了一个值,所以在那之后执行某些东西是没有意义的。因此,您需要在lol = (Button) findViewById (R.id.button1)
调用之前简单地移动lol = (Button) v.findViewById (R.id.button1)
(事实上应该将其称为v
,因为return v
是您的根视图),并且代码将正确编译。希望这会有所帮助。
答案 2 :(得分:0)
覆盖onViewCreated()
。像这样:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
lol = (Button) getView().findViewById (R.id.button1);
.... // ANY OTHER CASTS YOU NEED TO USE IN THE FRAGMENT
}