2015-10-17 49 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); 
相关问题