0

残念ながら、アプリケーションはエラーを停止しました。私はアンドロイドが初めてで、Eclipseを使用しています。アプリに戻るボタンがあると、このエラーが発生します。多くのページで戻るという名前のボタンを保持しています (すべてのボタンは一意の 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>

//ジャバコード

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)
4

3 に答える 3

1

あなたの実際の問題は、メインのアクティビティで2回行うことですが、同じアクティビティでそのように2回 setContentView
呼び出すことはできないため、これは機能しません。setContentView

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

アンドロイドでは、そのようなページ間を移動することはできず、実際には、呼び出されてその2番目のレイアウトを使用する別のアクティビティが必要です!R.idnullポインターは、設定した最初のコンテンツビューにボタンが存在しないため、そのボタンが見つからないためです。チュートリアルを読む:Androidインテント-チュートリアル

インテントの使用方法に関するこの質問もご覧ください:Androidで複数のsetContentViewを表示するための最良の方法

于 2012-09-14T20:21:22.693 に答える
0

スタックトレースを読んでください!MainActivity.java の 59 行目でクリックを処理した結果、MainActivity.java の 121 行目に潜んでいる Null Pointer Exception の原因が明確にリストされています。

編集:findViewById()あなたがしようとしているように見えますR.id.tv1が、あなたのレイアウトにはそのような要素がありません. R.id.tvm1ただし使います。また、レイアウト (またはこのコピー & ペースト コード) 間で不可解な Id を共有する習慣があるようで、他のレイアウトが を使用しているR.id.tv1ため、コンパイラ エラーは発生しません。

于 2012-09-14T16:29:30.360 に答える
0

logcat の Null Pointer Exception エラーの下にある 2 行をクリックして、コード内のエラー行にアクセスします。詳細については、こちらをご覧ください。 NullPointerException とは何ですか? また、どのように修正すればよいですか?

于 2012-09-14T16:43:40.577 に答える