Android - 在textView错误中显示日期

时间:2016-11-02 14:25:01

标签: java android android-fragments textview android-date

所以我创建了一个导航抽屉活动和一些片段。在一个片段上我有一个textView,我需要在其中显示日期,如dd.MM.yyyy 我设法使用以下方法在不同的应用上执行此操作:

//show date
    TextView datumprikaz = (TextView)findViewById(R.id.datumprikaz);
    Date danas = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
    String novDatum = sdf.format(danas);

    datumprikaz.setText(novDatum);
 //End of show date

但是当我现在在MainActivity.java中使用它时,它会显示错误:

尝试在空对象引用上调用虚方法'void android.widget.TextView.setText(java.lang.CharSequence)'

这是错误日志,MainActivity.java和我的fragment.xml(忽略大代码,日期部分是一行):

https://gist.github.com/anonymous/f19acb835b43111f576bef2791c4a28e

3 个答案:

答案 0 :(得分:0)

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

您的TextView datumprikazsetContentView

的布局不同

这就是变量datumprikaznull

的原因

答案 1 :(得分:0)

原因是您的文本视图未正确初始化,这就是您获得NullPointerException的原因。如果你的代码在片段类中,你应该像这样得到TextView:

TextView datumprikaz = (TextView)getView().findViewById(R.id.datumprikaz); 

希望它有效。

答案 2 :(得分:0)

我明白了!我只需要将代码添加到该片段(在我的情况下为TvrdjavaFragment)。 这是代码:

public class TvrdjavaFragment extends Fragment {


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


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_tvrdjava, container, false);
    // Inflate the layout for this fragment
    //show date
    TextView datumprikaz = (TextView) view.findViewById(R.id.datumprikaz);
    Date danas = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
    String novDatum = sdf.format(danas);

    datumprikaz.setText(novDatum);
    //End of show date
    return view;
}

我添加了显示日期(查看评论标签)