无法使用findViewById

时间:2016-06-11 10:59:12

标签: android findviewbyid

我遇到findViewById()的问题。每当我在这段代码中使用它时,它就会显示错误。有时Android工作室建议我这样做TextView DateView = null;

DateView = (TextView)DateView.findViewById(R.id.DateView);

但这也给出了错误。有人可以帮我解决这个问题。

public class OperationFragment extends Fragment {


    public OperationFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_operation, container, false);
    }

    public void onCreate (Bundle savedInstabceState){
        super.onCreate(savedInstabceState);
        Calendar c = Calendar.getInstance();
        SimpleDateFormat dd = new SimpleDateFormat("dd-MM-yyyy");
        SimpleDateFormat dt = new SimpleDateFormat("HH:mm a");
        String formattedDate = dd.format(c.getTime());
        String formattedTime = dt.format(c.getTime());
        TextView DateView;
        TextView TimeView;
        System.out.println(formattedTime);
        System.out.println(formattedDate);
        DateView = (TextView)findViewById(R.id.DateView);
        DateView.setText(formattedDate);
        TimeView = (TextView)findViewById(R.id.TimeView);
        TimeView.setText(formattedTime);
    }
}

2 个答案:

答案 0 :(得分:2)

当您使用片段时,我建议这样做:

在onCreateView中:

TextView TimeView;
View rootView = inflater.inflate(R.layout.fragment_operation, container, false);

TimeView = (TextView)rootView.findViewById(R.id.TimeView);
TimeView.setText("Anik Rahman");
return rootView;

答案 1 :(得分:1)

这里有几个问题。

第一个也是最重要的一个是onCreate()onCreateView()之前调用Fragements。而是使用onViewCreated()

第二个是,片段上没有方法findViewById()。在onViewCreated()中,您有一个View参数。因此,您可以使用view.findViewById()代替。