2015-10-07 37 views
0

我正在做一个观点,在这里我需要把TextClock,首先它必须是在visibility = gone,而当一个复选框用户点击时,textclock的知名度必须改变为可见。TextClock在Android是空

布局看起来像这样:(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

编辑15年8月10日 - >发现的解决方案

最后我找到了解决办法。 当我创建的活动,机器人工作室创建了第二个布局,一个新的版本,另一个用于V17,和我使用的ID是作为用于V17布局ID不同。这就是始终为空的原因。

enter image description here

回答

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" /> 
+0

Nope..is仍然空指针 – Shudy

+0

撞毁我找到解决办法......其实问题是setVisibility(View.GONE); .. ..refer http://stackoverflow.com/questions/22645065/how-to-make-analog-clock-invisible-and-visible-on-click-button-android – sasikumar

+0

其实这个问题是相似的,但不一样的,因为,代码永远不会将小部件绑定到对象,这就是为什么我得到“nul” l指针“异常。它崩溃,当因为...我尝试做clock.setVisibility(View.GONE)对象时钟,为空 – Shudy