2015-10-12 3 views
0

У меня проблемы с моим приложением, так как он всегда сбой, но я не уверен, как это сделать. Любая помощь будет оценена. Я по-прежнему неопытен с андроид-студией и, следовательно, выставляю это, пытаясь найти решения.Ссылка на нулевой объект: Сбой приложения

Вот LogCat авиакатастрофы:

10-12 02:11:37.457 7223-7223/com.fluke.kgwee.test E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.fluke.kgwee.test, PID: 7223 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.fluke.kgwee.test/com.fluke.kgwee.test.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
     at android.app.Activity.findViewById(Activity.java:2090) 
     at com.fluke.kgwee.test.MainActivity.<init>(MainActivity.java:17) 
     at java.lang.Class.newInstance(Native Method) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1067) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317) 

Java Файл:

public class MainActivity extends AppCompatActivity { 

Button buttonStart; 
TextView textCounter = (TextView) findViewById(R.id.counter); 

MyCountDownTimer myCountDownTimer = new MyCountDownTimer(30000, 1000, textCounter); 

public MainActivity() { 
} 

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

    buttonStart = (Button) findViewById(R.id.start); 

    buttonStart.setOnClickListener(new OnClickListener() { 



     @Override 
     public void onClick(View v) { 
      myCountDownTimer.start(); 

      new CountDownTimer(30000, 1000) { 

       public void onTick(long millisUntilFinished) { 
        textCounter.setText("seconds remaining: " + millisUntilFinished/1000); 
       } 

       public void onFinish() { 
        textCounter.setText("done!"); 
       } 
      }.start(); 
     } 


    }); 

} 

public class MyCountDownTimer extends CountDownTimer { 

    private TextView textCounter; 

    public MyCountDownTimer(long millisInFuture, long countDownInterval, TextView textCounter) { 
     super(millisInFuture, countDownInterval); 
     this.textCounter = textCounter; 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     this.textCounter.setText(millisUntilFinished/1000l + " seconds remaining : "); 

    } 

    @Override 
    public void onFinish() { 
     this.textCounter.setText("Finished"); 

    } 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

+0

Похоже, что эта операция никогда не инициализируется. См. [Http://stackoverflow.com/questions/22329029/java-lang-nullpointerexception-attempt-to-invoke-virtual-method-android-view-v](http://stackoverflow.com/questions/22329029/java -lang-NullPointerException-попытка к Invoke-виртуальной-методе-андроид-вид-V). – androiddev19

+0

Попробуйте мой код ниже, если он работает для вас, затем отметьте как принятый ответ –

ответ

0
TextView textCounter = (TextView) findViewById(R.id.counter); 

Поместите эту строку после setContentView. Перед настройкой представления содержимого вы не можете получить доступ к элементам макета.

Смежные вопросы