2013-06-07 5 views
-2
package com.example.first666; 

import com.example.first666.util.SystemUiHider; 

import android.annotation.TargetApi; 
import android.app.Activity; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

/** 
* An example full-screen activity that shows and hides the system UI (i.e. 
* status bar and navigation/system bar) with user interaction. 
* 
* @see SystemUiHider 
*/ 
public class FullscreenActivity extends Activity { 
    int counter; 
    Button add, sub; 
    TextView display; 
    /** 
    * Whether or not the system UI should be auto-hidden after 
    * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds. 
    */ 
    private static final boolean AUTO_HIDE = true; 

    /** 
    * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after 
    * user interaction before hiding the system UI. 
    */ 
    private static final int AUTO_HIDE_DELAY_MILLIS = 3000; 

    /** 
    * If set, will toggle the system UI visibility upon interaction. Otherwise, 
    * will show the system UI visibility upon interaction. 
    */ 
    private static final boolean TOGGLE_ON_CLICK = true; 

    /** 
    * The flags to pass to {@link SystemUiHider#getInstance}. 
    */ 
    private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION; 

    /** 
    * The instance of the {@link SystemUiHider} for this activity. 
    */ 
    private SystemUiHider mSystemUiHider; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_fullscreen); 
     counter = 0; 
     add = (Button) findViewById(R.id.bAdd); 
     sub = (Button) findViewById(R.id.bSub); 
     display = (TextView) findViewById(R.id.tvDisplay); 
     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter++; 
       display.setText("Your total is " + counter); 
      } 
     }); 
     sub.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter--; 
       display.setText("Your total is " + counter); 
      } 
     }); 

     final View controlsView = findViewById(R.id.fullscreen_content_controls); 
     final View contentView = findViewById(R.id.fullscreen_content); 

     // Set up an instance of SystemUiHider to control the system UI for 
     // this activity. 
     mSystemUiHider = SystemUiHider.getInstance(this, contentView, 
       HIDER_FLAGS); 
     mSystemUiHider.setup(); 
     mSystemUiHider 
       .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() { 
        // Cached values. 
        int mControlsHeight; 
        int mShortAnimTime; 

        @Override 
        @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
        public void onVisibilityChange(boolean visible) { 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
          // If the ViewPropertyAnimator API is available 
          // (Honeycomb MR2 and later), use it to animate the 
          // in-layout UI controls at the bottom of the 
          // screen. 
          if (mControlsHeight == 0) { 
           mControlsHeight = controlsView.getHeight(); 
          } 
          if (mShortAnimTime == 0) { 
           mShortAnimTime = getResources().getInteger(
             android.R.integer.config_shortAnimTime); 
          } 
          controlsView 
            .animate() 
            .translationY(visible ? 0 : mControlsHeight) 
            .setDuration(mShortAnimTime); 
         } else { 
          // If the ViewPropertyAnimator APIs aren't 
          // available, simply show or hide the in-layout UI 
          // controls. 
          controlsView.setVisibility(visible ? View.VISIBLE 
            : View.GONE); 
         } 

         if (visible && AUTO_HIDE) { 
          // Schedule a hide(). 
          delayedHide(AUTO_HIDE_DELAY_MILLIS); 
         } 
        } 
       }); 

     // Set up the user interaction to manually show or hide the system UI. 
     contentView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (TOGGLE_ON_CLICK) { 
        mSystemUiHider.toggle(); 
       } else { 
        mSystemUiHider.show(); 
       } 
      } 
     }); 

     // Upon interacting with UI controls, delay any scheduled hide() 
     // operations to prevent the jarring behavior of controls going away 
     // while interacting with the UI. 
     findViewById(R.id.dummy_button).setOnTouchListener(
       mDelayHideTouchListener); 
    } 

    @Override 
    public void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 

     // Trigger the initial hide() shortly after the activity has been 
     // created, to briefly hint to the user that UI controls 
     // are available. 
     delayedHide(100); 
    } 

    /** 
    * Touch listener to use for in-layout UI controls to delay hiding the 
    * system UI. This is to prevent the jarring behavior of controls going away 
    * while interacting with activity UI. 
    */ 
    View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      if (AUTO_HIDE) { 
       delayedHide(AUTO_HIDE_DELAY_MILLIS); 
      } 
      return false; 
     } 
    }; 

    Handler mHideHandler = new Handler(); 
    Runnable mHideRunnable = new Runnable() { 
     @Override 
     public void run() { 
      mSystemUiHider.hide(); 
     } 
    }; 

    /** 
    * Schedules a call to hide() in [delay] milliseconds, canceling any 
    * previously scheduled calls. 
    */ 
    public void delayedHide(int delayMillis) { 
     mHideHandler.removeCallbacks(mHideRunnable); 
     mHideHandler.postDelayed(mHideRunnable, delayMillis); 
    } 
} 

display = (TextView) findViewById(R.id.tvDisplay);을 처리 할 때 nullpointerexception이 발생합니다.이 응용 프로그램은 '불행히도 응용 프로그램이 중지되었습니다.'라는 오류가 발생합니다. NullPointerException을 어떻게 수정합니까?nullpointerexception 제거

다음은 요청한 XML 파일입니다. 어떤 도움을 주셔서 감사합니다. 여기

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/tvDisplay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" 
     android:textSize="200sp" 
     android:layout_gravity="center" 
     android:gravity="center"/> 

<Button 
    android:layout_width="500sp" 
    android:layout_height="200sp" 
    android:text="@string/Add" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:textSize="75sp" 
    android:id="@+id/bAdd"/> 
<Button 
    android:layout_width="500sp" 
    android:layout_height="200sp" 
    android:text="@string/Sub" 
    android:layout_gravity="center" 
    android:textSize="75sp" 
    android:id="@+id/bSub"/> 
</LinearLayout> 

06-05 14:52:46.269: E/Trace(466): error opening trace file: No such file or directory (2) 
06-05 14:52:48.300: D/AndroidRuntime(466): Shutting down VM 
06-05 14:52:48.309: W/dalvikvm(466): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
06-05 14:52:48.360: E/AndroidRuntime(466): FATAL EXCEPTION: main 
06-05 14:52:48.360: E/AndroidRuntime(466): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.first666/com.example.first666.FullscreenActivity}: java.lang.NullPointerException 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.os.Looper.loop(Looper.java:137) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread.main(ActivityThread.java:5041) 
06-05 14:52:48.360: E/AndroidRuntime(466): at java.lang.reflect.Method.invokeNative(Native Method) 
06-05 14:52:48.360: E/AndroidRuntime(466): at java.lang.reflect.Method.invoke(Method.java:511) 
06-05 14:52:48.360: E/AndroidRuntime(466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
06-05 14:52:48.360: E/AndroidRuntime(466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
06-05 14:52:48.360: E/AndroidRuntime(466): at dalvik.system.NativeStart.main(Native Method) 
06-05 14:52:48.360: E/AndroidRuntime(466): Caused by: java.lang.NullPointerException 
06-05 14:52:48.360: E/AndroidRuntime(466): at com.example.first666.FullscreenActivity.onCreate(FullscreenActivity.java:62) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.Activity.performCreate(Activity.java:5104) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
06-05 14:52:48.360: E/AndroidRuntime(466): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
06-05 14:52:48.360: E/AndroidRuntime(466): ... 11 more 
06-05 14:53:28.219: I/Process(466): Sending signal. PID: 466 SIG: 9 
+0

xml 파일을 표시 할 수 있습니까? –

+1

그리고 logcat 출력을 –

+0

게시 할 수 없습니다. display = (TextView) findViewById (R.id.tvDisplay); – Blackbelt

답변

1
final View controlsView = findViewById(R.id.fullscreen_content_controls); 
final View contentView = findViewById(R.id.fullscreen_content); 

현재 뷰 계층에 속하는하지 않는 요청에 따라 로그 캣의

0

라인 (62)이 라인이 반환되는 경우 add.setOnClickListener(new View.OnClickListener() ...

그런 다음 체크 인 경우 null :

add = (Button) findViewById(R.id.bAdd); 
+0

아니요 61 호선과 62 호선이 없습니다. – Judas

+0

@ Judas "No"란 무엇을 의미합니까? 그렇다면 라인 62에서 무엇입니까 ?? –

+0

나는 62 행에 Nullpointerexception이 있다고 말했다. – Judas