2015-10-17 91 views
-2

這是我在模擬器上運行應用程序時的日誌,我是新開發的應用程序,有人可以幫忙嗎?如果需要,我會發布代碼,但其分爲多個活動。第一個Android應用程序崩潰但代碼中沒有錯誤

10-17 08:45:43.269 2696-2696/? I/art﹕ Not late-enabling -Xcheck:jni (already on) 
10-17 08:45:43.269 2696-2696/? I/art﹕ Late-enabling JIT 
10-17 08:45:43.273 2696-2696/? I/art﹕ JIT created with code_cache_capacity=2MB compile_threshold=1000 
10-17 08:45:43.304 2696-2696/? W/System﹕ ClassLoader referenced unknown path: /data/app/com.victorioussecrets.nwureferencegenerator-2/lib/x86 
10-17 08:45:43.427 2696-2696/com.victorioussecrets.nwureferencegenerator D/AndroidRuntime﹕ Shutting down VM 
10-17 08:45:43.427 2696-2696/com.victorioussecrets.nwureferencegenerator E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.victorioussecrets.nwureferencegenerator, PID: 2696 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.victorioussecrets.nwureferencegenerator/com.victorioussecrets.nwureferencegenerator.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
      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 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
      at com.victorioussecrets.nwureferencegenerator.MainActivity.onCreate(MainActivity.java:31) 
      at android.app.Activity.performCreate(Activity.java:6237) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
            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) 
10-17 08:45:47.140 2696-2696/? I/Process﹕ Sending signal. PID: 2696 SIG: 9 

我修復了空錯誤,這是現在的新日誌。

10-17 09:28:23.871 3195-3195/com.victorioussecrets.nwureferencegenerator E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.victorioussecrets.nwureferencegenerator, PID: 3195 
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.widget.Spinner.getSelectedItem()' on a null object reference 
      at com.victorioussecrets.nwureferencegenerator.MainActivity.onItemSelected(MainActivity.java:70) 
      at android.widget.AdapterView.fireOnSelected(AdapterView.java:922) 
      at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:911) 
      at android.widget.AdapterView.-wrap1(AdapterView.java) 
      at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:881) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      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) 

這裏是我的MainActivity.java

package com.victorioussecrets.nwureferencegenerator; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 


public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 


    Spinner spinnerStyles; 
    Button btnExit; 

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

     btnExit = (Button)findViewById(R.id.btnExit); 

     Spinner spinner = (Spinner)findViewById(R.id.spinnerStyles); 
     ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.arrStyles,android.R.layout.simple_spinner_item); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(this); 

     btnExit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
       System.exit(0); 
      } 
     }); 
    } 

    @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); 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 


     String spinVal = ""; 

     spinVal = spinnerStyles.getSelectedItem().toString(); 

     if(spinVal.equals("NWU Harvard")) { 
      startActivity(new Intent(MainActivity.this, nwu_harvard.class)); 
     } 
     if(spinVal.equals("LAW")) { 
      startActivity(new Intent(MainActivity.this, law.class)); 
     } 
     if(spinVal.equals("APA")) { 
      startActivity(new Intent(MainActivity.this, apa.class)); 
     } 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
} 

我最後的錯誤,當我運行應用程序,並獲得nwu_harvard_book.java活動我沒有得到一個崩潰或錯誤,但是當我嘗試nwu_harvard_article.java活動我得到這個錯誤。

10-17 10:35:42.499 28256-28256/com.victorioussecrets.nwureferencegenerator E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.victorioussecrets.nwureferencegenerator, PID: 28256 
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
      at com.victorioussecrets.nwureferencegenerator.nwu_harvard_article$2.onClick(nwu_harvard_article.java:43) 
      at android.view.View.performClick(View.java:5156) 
      at android.view.View$PerformClick.run(View.java:20755) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:145) 
      at android.app.ActivityThread.main(ActivityThread.java:5832) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

這是第一nwu_harvard_book活性 包com.victorioussecrets.nwureferencegenerator;

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class nwu_harvard_book extends AppCompatActivity { 

    Button btnBack,btnGenerate; 
    String stringf= "",value1= "",value3= "",value2= "",value4= "",value5= ""; 
    EditText inputTxt = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.nwu_harvard_book); 

     btnGenerate = (Button) findViewById(R.id.btngenerate); 
     btnBack = (Button) findViewById(R.id.btnBack); 

     btnBack.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 

     btnGenerate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       inputTxt = (EditText) findViewById(R.id.edtAuthor); 
       value1 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtTitle); 
       value2 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtDate); 
       value3 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtEdition); 
       value4 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtTown); 
       value5 = inputTxt.getText().toString(); 

       stringf = (value1+". "+value3+". "+value2+". "+value4+". "+value5+"."); 


       Intent intent = new Intent(nwu_harvard_book.this, output.class); 
       intent.putExtra("output", stringf); 
       startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.nwu_harvard_book, 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); 
    } 
} 

這是第二nwu_harvard_article活動

package com.victorioussecrets.nwureferencegenerator; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class nwu_harvard_article extends AppCompatActivity { 

    Button btnBack,btnGenerate; 
    String stringf= "",value1= "",value3= "",value2= "",value4= "",value5= "",value6= ""; 
    EditText inputTxt = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.nwu_harvard_book); 

     btnGenerate = (Button) findViewById(R.id.btngenerate); 
     btnBack = (Button) findViewById(R.id.btnBack); 

     btnBack.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 

     btnGenerate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       inputTxt = (EditText) findViewById(R.id.edtAuthor); 
       value1 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtTitle); 
       value2 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtDate); 
       value3 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtpages); 
       value4 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtmagtitle); 
       value5 = inputTxt.getText().toString(); 
       inputTxt = (EditText) findViewById(R.id.edtVolume); 
       value6 = inputTxt.getText().toString(); 


       stringf = (value1+". "+value3+". "+value2+" "+value5+". "+value6+"."); 


       Intent intent = new Intent(nwu_harvard_article.this, output.class); 
       intent.putExtra("output", stringf); 
       startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.nwu_harvard_book, 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

「ActivityThread.java」的第2416行有一個「null」對象。 – javanut13

+1

你試圖在一個null的按鈕上設置setOnClickListener,只需在onCeate(findViewById)中定義你的按鈕即可。 –

+0

發表主MainActivity –

回答

0

在所有3個方案中,您有NPE(空指針異常)。
第一案 - NPE巴頓視圖中MainActivity未初始化: 我覺得行是btnExit.setOnClickListener(。這你解決使用解決方案由侯賽因Gerami提供,可能增加btnExit = (Button)findViewById(R.id.btnExit);

第二種情況 - NPE與微調未初始化在MainActivity onItemSelected方法中:這裏行是spinVal = spinnerStyles.getSelectedItem().toString(); 您在初始化spinnerStyles或使用其他替代方法後對其進行了修正。

第三種情況 - NPE與EditText上是nwu_harvard_article空:在這種情況下,行所指出的logcat報告

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
     at com.victorioussecrets.nwureferencegenerator.nwu_harvard_article$2.onClick(nwu_harvard_article.java:43) 

在這種情況下,線現在value4 = inputTxt.getText().toString();爲什麼在這裏inputTxt爲空bcoz以上行使inputTxt null爲inputTxt = (EditText) findViewById(R.id.edtpages);這意味着佈局沒有帶有id的EditText作爲R.id.edtpages。
在這兩個活動nwu_harvard_articlenwu_harvard_book你分配相同的佈局,即setContentView(R.layout.nwu_harvard_book);所以請所有的EditText視圖的編號。我相信你有編號爲edtAuthor, edtTitle and, edtDate的EditText。那爲什麼你在nwu_harvard_article之後沒有得到NPE,直到value3出現問題。 所以請佈局中正確

建議注意:請理解究竟什麼是NPE從here
而你 可以很容易地修復它,因爲在logcat報告中,你可以清楚地知道給這個NPE並導致應用程序崩潰的行。
例如:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
      at com.victorioussecrets.nwureferencegenerator.nwu_harvard_article$2.onClick(nwu_harvard_article.java:43) 

在可以看到nwu_harvard_article.java:43上面的行。這是超鏈接的行,這意味着你可以點擊,如果你點擊它,它會直接把你的文件中的行引發錯誤,在你的情況下它會是value4 ...也是第一行指定你爲什麼得到NPE。

2

您的按鈕爲空。必須對其進行初始化

Button button = (Button)findViewById(R.id.your_id); 

Button button = new Button(yourContext); 

parent.addView(button); 
0

有您的活動的onCreate方法的問題。你檢查你的XML按鈕ID是否與onCreate相同。

Button button = (Button)findViewById(R.id.button1);