遗憾的是,应用程序已停止错误。我是android新手,我正在使用eclipse。我在应用程序上有一个后退按钮时收到此错误。我在许多页面中保留了名为back的按钮(所有按钮都使用唯一ID区分),但所有后退按钮必须重定向到同一页面,并且我收到错误。请给我一个解决方案。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/memo">
<Button
android:id="@+id/btnm1"
android:layout_centerInParent="true"
android:layout_marginTop="70dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="45dp"
android:layout_alignParentTop="true"
android:text="Create memo" />
<Button
android:id="@+id/btnm2"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnm1"
android:text="Edit memo"
android:textSize="45dp"/>
<Button
android:id="@+id/btnm3"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnm2"
android:text="Delete memo"
android:textSize="45dp"/>
<TextView
android:id="@+id/tvm1"
android:textColor="#C73F17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Memo"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="50dp" />
<Button
android:id="@+id/backmemo"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvm1"
android:layout_below="@+id/btnm3"
android:layout_marginLeft="24dp"
android:layout_marginTop="56dp"
android:text="Back" />
</RelativeLayout>
// JAVA CODE
package dlp.android.digichronicle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener{
Button btn1,btn2,btn21,btn22,btn23,btn24,btn25,btnm1,btnm2,btnm3,btntk1,btntk2,btntk3,btnrm1,btnrm 2,btnrm3;
Button btne1,btne2,btne3,backmemo,backtask,backremind,backevent;
TextView tv1,tv31;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FirstPage();
}
public void FirstPage(){
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.btn1);
btn1.setOnClickListener(this);
btn2=(Button)findViewById(R.id.btn2);
btn2.setOnClickListener(this);
dia();//dialogue box
}
public void ThirdPage(){
}
public void dia(){
Context context = MainActivity.this;
AlertDialog.Builder ad = new AlertDialog.Builder(context);
ad.setTitle("EVENT");
ad.setMessage("Event goes here");
ad.setPositiveButton("Done",
new OnClickListener() {
public void onClick(DialogInterface dialog,
int arg1) { }
});
ad.setCancelable(true);
ad.show();
}
public void onClick(View v){
if(v==btn1)
SecondPg();
if(v==btn2)
{
}
if(v==btn21)
{
memo();
}
if(v==btn22)
{
task();
}
if(v==btn23)
{
event();
}
if(v==btn24)
{
reminder();
}
if(v==btn25)
{
//ThirdPage();
}
if(v==backmemo)
{
//SecondPg();
}
if(v==backtask)
{
//SecondPg();
}
if(v==backremind)
{
//SecondPg();
}
if(v==backevent)
{
SecondPg();
}
}
public void SecondPg(){
setContentView(R.layout.second);
tv1=(TextView)findViewById(R.id.tv1);
btn21=(Button)findViewById(R.id.btn21);
btn21.setOnClickListener(this);
btn22=(Button)findViewById(R.id.btn22);
btn22.setOnClickListener(this);
btn23=(Button)findViewById(R.id.btn23);
btn23.setOnClickListener(this);
btn24=(Button)findViewById(R.id.btn24);
btn24.setOnClickListener(this);
btn25=(Button)findViewById(R.id.btn25);
btn25.setOnClickListener(this);
// back_tas=(Button)findViewById(R.id.back_tas);
// back_tas.setOnClickListener(this);
backevent=(Button)findViewById(R.id.backevent);
backevent.setOnClickListener(this);
//back_mem=(Button)findViewById(R.id.back_mem);
//back_mem.setOnClickListener(this);
//back_rem=(Button)findViewById(R.id.back_rem);
//back_rem.setOnClickListener(this);
}
public void memo(){
setContentView(R.layout.memo);
btnm1=(Button)findViewById(R.id.btnm1);
btnm1.setOnClickListener(this);
btnm2=(Button)findViewById(R.id.btnm2);
btnm2.setOnClickListener(this);
btnm3=(Button)findViewById(R.id.btnm3);
btnm3.setOnClickListener(this);
}
public void task(){
setContentView(R.layout.tasks);
btntk1=(Button)findViewById(R.id.btntk1);
btntk1.setOnClickListener(this);
btntk2=(Button)findViewById(R.id.btntk2);
btntk2.setOnClickListener(this);
btntk3=(Button)findViewById(R.id.btntk3);
btntk3.setOnClickListener(this);
}
public void reminder(){
setContentView(R.layout.reminder);
btnrm1=(Button)findViewById(R.id.btnrm1);
btnrm1.setOnClickListener(this);
btnrm2=(Button)findViewById(R.id.btnrm2);
btnrm2.setOnClickListener(this);
btnrm3=(Button)findViewById(R.id.btnrm3);
btnrm3.setOnClickListener(this);
}
public void event(){
setContentView(R.layout.events);
btne1=(Button)findViewById(R.id.btne1);
btne1.setOnClickListener(this);
btne2=(Button)findViewById(R.id.btne2);
btne2.setOnClickListener(this);
btne3=(Button)findViewById(R.id.btne3);
btne3.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
09-14 21:35:07.086: W/dalvikvm(708): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
09-14 21:35:07.107: E/AndroidRuntime(708): FATAL EXCEPTION: main
09-14 21:35:07.107: E/AndroidRuntime(708): java.lang.NullPointerException
09-14 21:35:07.107: E/AndroidRuntime(708): at dlp.android.digichronicle.MainActivity.SecondPg(MainActivity.java:121)
09-14 21:35:07.107: E/AndroidRuntime(708): at dlp.android.digichronicle.MainActivity.onClick(MainActivity.java:59)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.view.View.performClick(View.java:3511)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.view.View$PerformClick.run(View.java:14105)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.os.Handler.handleCallback(Handler.java:605)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.os.Handler.dispatchMessage(Handler.java:92)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.os.Looper.loop(Looper.java:137)
09-14 21:35:07.107: E/AndroidRuntime(708): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-14 21:35:07.107: E/AndroidRuntime(708): at java.lang.reflect.Method.invokeNative(Native Method)
09-14 21:35:07.107: E/AndroidRuntime(708): at java.lang.reflect.Method.invoke(Method.java:511)
09-14 21:35:07.107: E/AndroidRuntime(708): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-14 21:35:07.107: E/AndroidRuntime(708): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-14 21:35:07.107: E/AndroidRuntime(708): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
我现在可以告诉你,你的实际问题是setContentView
在您的主要活动中两次,这将无法正常工作,因为您无法像在同一活动中那样两次调用setContentView
。
public void SecondPg(){
setContentView(R.layout.second);
在android中,你不能在这样的页面之间进行,你实际上需要另一个将被调用的活动,并将使用第二个布局!空指针是因为它找不到R.id
按钮,因为它在您设置的FIRST内容视图中不存在。阅读教程:Android Intents - Tutorial
另请查看有关如何使用意图的问题:Best way to display multiple setContentView in Android
答案 1 :(得分:0)
读取你的堆栈跟踪!它清楚地将罪魁祸首列为你的MainActivity.java第121行潜伏的Null Pointer Exception,因为在MainActivity.java第59行处理了点击。
编辑:看起来你试图在findViewById()
上R.id.tv1
,但你的布局没有这样的元素。但它使用R.id.tvm1
。而且你似乎养成了在布局(或者这个复制和粘贴代码)之间共享你神秘的ID的习惯,所以其他一些布局使用R.id.tv1
,因此没有编译器错误。
答案 2 :(得分:0)
单击logcat中的Null Pointer Exception错误下面的两行,以到达代码中的错误行。 更多,看看这个.. What is a NullPointerException, and how do I fix it?