2016-06-08 3 views
0

내 앱이 닫히고 오류가 발생합니다. 도와주세요.

활동 클래스

public class MenuPrincipalActivity extends AppCompatActivity { 

    SQLiteDatabase db; 
    Button btcadastrar_ferramenta; 
    Button btconsultar_ferramenta; 
    Button btalterar_dados; 
    Button btexcluir_ferramenta; 



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

     btcadastrar_ferramenta = (Button) 
       findViewById(R.id.btcadastrar_ferramenta); 
     btalterar_dados = (Button) 
       findViewById(R.id.btalterar_dados); 
     btconsultar_ferramenta = (Button) 
       findViewById(R.id.btconsultar_ferramenta) ; 
     btexcluir_ferramenta = (Button) findViewById(R.id.btexcluir_ferramenta); 
     btcadastrar_ferramenta.setOnClickListener (new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent cadastrarFerramentaActivity = new 
         Intent(MenuPrincipalActivity.this, CadastrarFerramentasActivity.class 
       ); 
       MenuPrincipalActivity.this.startActivity 
         (cadastrarFerramentaActivity); 
       btalterar_dados.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View arg0) { 
         Intent consultaFerramentaActivity = new 
           Intent(MenuPrincipalActivity.this, 
           BuscaFerramentasActivity.class); 
         consultaFerramentaActivity.putExtra("opcao_dados", 1); 

         MenuPrincipalActivity.this.startActivity(consultaFerramentaActivity); 
        } 
       }); 


       btconsultar_ferramenta.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View arg0) { 
         Intent consultaFerramentaActivity = new 
           Intent(MenuPrincipalActivity.this, BuscaFerramentasActivity.class); 
         consultaFerramentaActivity.putExtra("opcao_dados", 2); 
         MenuPrincipalActivity.this.startActivity(consultaFerramentaActivity); 
        } 
       }); 
       btexcluir_ferramenta.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View argO) { 
         Intent consultaFerramentaActivity = new 
           Intent(MenuPrincipalActivity.this, BuscaFerramentasActivity.class); 
         consultaFerramentaActivity.putExtra("opcao_dados", 3); 
         MenuPrincipalActivity.this.startActivity(consultaFerramentaActivity); 
        } 
       }); 
       try { 
        db = openOrCreateDatabase("banco_dados", Context.MODE_PRIVATE, null); 
        db.execSQL("create table if not exists " + "ferramentas(numreg integer primary key " + 
          "autoincrement, nome_ferramenta text not null," + 
          "fabricante text not null, " + "preco float not null," + 
          "cor text not null, referencia text not null)"); 
       } catch (Exception e) { 
        MostraMensagem("Erro" + e.toString()); 
       } 
      } 

      public void MostraMensagem(String str) { 
       AlertDialog.Builder dialogo = new AlertDialog.Builder(MenuPrincipalActivity.this); 
       dialogo.setTitle("Aviso"); 
       dialogo.setMessage(str); 
       dialogo.setNeutralButton("OK", null); 
       dialogo.show(); 
      } 

     });}} 

CadastrarFerramentasActivity 클래스 주어진

public class CadastrarFerramentasActivity extends Activity { 

    EditText ednome_ferramenta, edfabricante, edpreco, edcor, edreferencia; 

    Button btcadastrar, btfechar; 

    SQLiteDatabase db; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_cadastrar_ferramentas); 
     ednome_ferramenta= (EditText) 
       findViewById(R.id. ednome_ferramenta); 
     edfabricante = (EditText) findViewById(R. id .edfabricante); 
     edpreco = (EditText) findViewById(R. id . edpreco); 
     edcor = (EditText) findViewById(R. id.edcor); 
     edreferencia = (EditText) findViewById(R. id .edreferencia); 
     btcadastrar = (Button) findViewById(R.id.btcadastrar_ferramenta); 
     btcadastrar .setOnClickListener(new View.OnClickListener() { 

      @Override public void onClick(View view) { 
       String nome_ferramenta = ednome_ferramenta. getText() . toString() ; 
       String fabricante = edfabricante.getText() .toString(); 
       String preco = edpreco.getText() .toString() ; 
       String cor = edcor.getText() .toString(); 
       String referencia = edreferencia.getText() . toString(); 
       ContentValues valor = new ContentValues(); 
       valor. put ("nome_ferramenta " , nome_ferramenta); 
       valor. put ("fabricante " , fabricante); 
       valor. put ("preco " , Float . parseFloat(preco)); 
       valor. put ("cor", cor) ; 
       valor. put (" referencia " , referencia) ; 
       db. insert ("ferramentas " , null, valor); 
       AlertDialog.Builder dialogo = new 
         AlertDialog.Builder (CadastrarFerramentasActivity. this) ; 
       dialogo. setTitle("Aviso"); 
       dialogo. setMessage("Dados cadastrados com sucesso! ") ; 
       dialogo. setNeutralButton("OK" , new DialogInterface.OnClickListener() { 
        @Override public void onClick(DialogInterface argO, int argl) { 
           CadastrarFerramentasActivity.this.finish(); 
          }}); 
           dialogo. show() ; 

          } 

    }); 
     btfechar = (Button) findViewById(R. id .btfechar); btfechar. setOnClickListener(new View. OnClickListener() { 
      @Override 
      public void onClick(View argO) { 
       CadastrarFerramentasActivity.this.finish(); 
      }}); 
       try { 
        db = openOrCreateDatabase("banco_dados", 
          Context.MODE_PRIVATE, null); 
       } catch (Exception e) { 
        MostraMensagem("Erro" + e.toString()); 
       } 
      } 

      public void MostraMensagem(String str) { 
       AlertDialog.Builder dialogo = new AlertDialog.Builder(CadastrarFerramentasActivity.this); 
       dialogo.setTitle("Aviso"); 
       dialogo.setMessage(str); 
       dialogo.setNeutralButton("OK ", null); 
       dialogo.show(); 
      } 
     } 

오류는 이것이다 :

06-08 20:09:46.136 6894-6894/com.example.iohananabc.ferramentas E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.iohananabc.ferramentas, PID: 6894 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.iohananabc.ferramentas/com.example.iohananabc.ferramentas.CadastrarFerramentasActivity}: 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:2298) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     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:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     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.example.iohananabc.ferramentas.CadastrarFerramentasActivity.onCreate(CadastrarFerramentasActivity.java:33) 
     at android.app.Activity.performCreate(Activity.java:5937) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  
     at android.app.ActivityThread.access$800(ActivityThread.java:144)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:135)  
     at android.app.ActivityThread.main(ActivityThread.java:5221)  
     at java.lang.reflect.Method.invoke(Native Method) 
+3

코드에서 정확히 어떤 줄에이 오류가 발생합니까? 전체 logcat을 게시하십시오. – Vucko

+0

방금 ​​게시했습니다. –

+1

'CadastrarFerramentasActivity' 활동을위한 레이아웃 xml 파일을 포함시킬 수 있습니까? 'findViewById()'에서'btcadastrar'에 사용했던 ID 때문일 수 있습니다. 아마도 당신이 말하는 레이아웃이 다릅니다. –

답변

1

Pelo nome das classes are fale português, então o motivo que que deos estar de find out to find the cast to está dando errado, 베네피아는 레이아웃과 마찬가지로 레이아웃을 수정하지 않습니다.

포르투갈어를 사용하지 않는 경우를 대비해서. findViewById() 명령 중 하나가 널 (NULL)을 리턴하거나 캐스트 조작에 실패했는지 여부가 발생합니다. 따라서 레이아웃 파일을 확인하여 버튼의 ID가 올바르게 설정되어 있는지 확인하십시오.

0

xml 레이아웃을 요청한 이래로 아직 게시되지 않았으므로 앞으로 나아가서 대답을 게시 할 예정입니다. 귀하의 오류 로그에서

, 그것은 당신의 CadastrarFerramentasActivity에서 NPE를 갖는 setOnClickListener()쪽으로 향하고, 및 코드에 따라 당신이 단 하나 그것이 btfechar.setOnClickListener입니다 호출 제공 니펫을한다. 당신의 findViewId()이 그 ( R.layout.activity_cadastrar_ferramentas 인) 사용자가 설정 한 활동 레이아웃에없는 (당신의 R.id.btfechar를 사용하여 코드에서)의 ID를 참조하고 있기 때문에 이것이 happenning되는 이유에

한 설명입니다.

레이아웃 xml 파일을 확인하고 어떤 일이 발생했는지 알려주고 (사용자의 소식을 업데이트하는 것이 좋습니다)

건배!

관련 문제