내 앱이 닫히고 오류가 발생합니다. 도와주세요.
활동 클래스
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)
코드에서 정확히 어떤 줄에이 오류가 발생합니까? 전체 logcat을 게시하십시오. – Vucko
방금 게시했습니다. –
'CadastrarFerramentasActivity' 활동을위한 레이아웃 xml 파일을 포함시킬 수 있습니까? 'findViewById()'에서'btcadastrar'에 사용했던 ID 때문일 수 있습니다. 아마도 당신이 말하는 레이아웃이 다릅니다. –