【问题标题】:Application has unfortunately has stopped error不幸的是,应用程序已停止错误
【发布时间】:2012-09-14 16:19:43
【问题描述】:

不幸的是,应用程序已停止错误。我是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代码

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)

【问题讨论】:

  • 除非您展示您的代码并至少尝试查看您的 MainActivity 第 121 行,否则我们无法为您提供解决方案! java.lang.NullPointerException 09-14 21:35:07.107: E/AndroidRuntime(708): 在 dlp.android.digichronicle.MainActivity.SecondPg(MainActivity.java:121)
  • 我已将所有代码连同 MainActivity 放在 xml 之后,代码中带有标题 Java 代码,请向下滚动查看
  • 请帮助我。我在做这个应用程序时承受着巨大的压力

标签: android forceclose


【解决方案1】:

我现在可以告诉你,你的实际问题是你这样做setContentView
在您的主要活动中两次,这将不起作用,因为您不能在同一活动中两次调用setContentView。

public void SecondPg(){
    setContentView(R.layout.second);

在 android 中,你不能在这样的页面之间切换,你实际上需要另一个 Activity,它会被调用并使用第二个布局!空指针是因为它找不到 R.id 按钮,因为它在您设置的第一个内容视图上不存在。阅读教程:Android Intents - Tutorial

还可以看看这个关于如何使用意图的问题:Best way to display multiple setContentView in Android

【讨论】:

  • 哦...非常感谢,但是我应该使用哪个活动在同一个类中再次调用相同的布局
  • 每个活动本身就是一个类,每个活动都应该有自己的布局。您的第一个活动应该在它自己的布局上设置内容布局,并且您应该在那里的某个地方创建一个启动第二个活动的意图。您的第二个活动应该有自己的布局
【解决方案2】:

单击 logcat 中 Null Pointer Exception 错误下方的两行以访问代码中的错误行。 更多,看看这个.. What is a NullPointerException, and how do I fix it?

【讨论】:

  • 我可以转到 SecondPg();但找不到问题,即错误的原因,我发现所有编写的代码都很好:(
  • 你能发布你的 MainActivity.java 文件吗?
  • 怎么发?对不起不知道请告诉我
  • 我已将所有代码连同 MainActivity 放在 xml 之后,代码中带有标题 Java 代码请向下滚动查看
  • 请帮助我。我的压力很大。
【解决方案3】:

阅读您的堆栈跟踪!它清楚地列出了潜伏在 MainActivity.java 第 121 行中的 Null Pointer Exception 的罪魁祸首,这是在 MainActivity.java 第 59 行处理单击的结果。

编辑:看起来您尝试在R.id.tv1 上使用findViewById(),但您的布局没有此类元素。但是它使用R.id.tvm1。而且您似乎习惯于在布局(或此复制和粘贴代码)之间共享您的神秘 ID,因此其他一些布局使用 R.id.tv1,因此没有编译器错误。

【讨论】:

  • 是的,但我找不到任何故障
  • 请帮助我。我在做这个应用程序时承受着巨大的压力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 2017-01-12
  • 1970-01-01
  • 2016-10-03
  • 2018-03-23
相关资源
最近更新 更多