android中的TextClock为null

时间:2015-10-07 10:56:36

标签: android android-layout

我正在做一个视图,我需要放置一个TextClock,首先它必须在visibility = gone,当用户点击一个复选框时,textclock的可见性必须改为可见

布局如下:( activity_main_activity_2

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="1" >

    <!-- Title -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/title"
            android:id="@+id/title"
            android:textSize="25sp"
            android:textStyle="bold"
            android:layout_weight="0.05"
            android:textColor="#000" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/editTitle"
            android:layout_weight="0.06"
            android:inputType="text" />

    </LinearLayout>

    <!-- Description -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/description"
            android:id="@+id/description"
            android:layout_weight="0.02"
            android:textSize="25sp"
            android:textStyle="bold"
            android:textColor="#000" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/editDescription"
            android:layout_weight="0.04"
            android:inputType="text" />

    </LinearLayout>

    <!-- Time -->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/time_update">

        <TextClock
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/clock_important"
            android:textSize="25sp"/>

    </LinearLayout>

    <!-- Important -->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <CheckBox
            android:layout_width="match_parent"
            android:layout_height="61dp"
            android:text="@string/important"
            android:id="@+id/important"
            android:textSize="25sp"
            android:textStyle="bold" />
    </LinearLayout>

    <!-- Buttons -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <!-- Edit -->
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/edit"
            android:id="@+id/btn_edit"
            android:textStyle="bold"
            android:textSize="20sp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_weight="0.05" />
        <!-- Cancel -->
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:id="@+id/btn_cancel"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_weight="0.05" />
    </LinearLayout>

</LinearLayout>

如您所见,时钟的ID为:android:id="@+id/clock_important"

然后在我做的活动中:

TextClock clock;
......
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity_2);

        clock = (TextClock) findViewById(R.id.clock_important);
        clock.setVisibility(View.GONE);
        ....

这就是问题出现的地方,因为clock为空。

enter image description here

日志文件

 Caused by: java.lang.NullPointerException
            at com.dm.ejercicio_1.MainActivity_2.onCreate(MainActivity_2.java:40)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5146)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
            at dalvik.system.NativeStart.main(Native Method)

我该如何解决?我不知道为什么不给它充气....

P.S:我设置minSdkVersion 17

编辑08/10/15 - &gt;解决方案

最后我找到了解决方案。 当我创建活动时,Android Studio创建了第二个布局,一个用于新版本,另一个用于v17,我使用的id与用于v17布局的AS不同。这个原因总是空的。

enter image description here

1 个答案:

答案 0 :(得分:0)

TextClock 更改您的xml,如下所示

<android.widget.TextClock
android:id="@+id/textclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timeZone="GMT+0800"
android:format24Hour="MMM dd, yyyy k:mm"
android:format12Hour="@null" />