-3

アプリのすべてのページに「メニュー」イメージビューがあります。メニューをクリックすると、ログイン、ホーム、ジョブ、約などのすべてのメニュー項目が開き、「約」メニュー項目をクリックすると、アプリが強制的に閉じられます「メニューのOnClicklistener」でnullポインタ例外が発生しましたが、他のMenuitemsにはこの問題はありません。誰かこれを解決できますか?

public class About extends Activity {
LinearLayout line1, line2;
ImageView menu;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);
    menu.setOnClickListener(new View.OnClickListener() {

        ImageView menu = (ImageView)findViewById(R.id.menu);
        public void onClick(View v) {
           menu.setVisibility(View.VISIBLE);
          // TODO Auto-generated method stub
        line1.setVisibility(View.VISIBLE);
        if (line2.getVisibility() == View.INVISIBLE || line2.getVisibility() == View.GONE) {
            line2.setVisibility(View.VISIBLE); } 
        else { 
            line2.setVisibility(View.INVISIBLE); 
        } 
          }
        });



          ImageView home = (ImageView) findViewById(R.id.home);
          home.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v){
                startActivity(new Intent(About.this, Home.class));
             }
              });

          ImageView jobs = (ImageView) findViewById(R.id.jobs);
           jobs.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v){
                startActivity(new Intent(About.this, Jobs.class));
             }
              });

          ImageView log = (ImageView) findViewById(R.id.log);
          log.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v){
                startActivity(new Intent(About.this, Login.class));
             }
              });

          ImageView about = (ImageView) findViewById(R.id.about);
          about.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v){
                startActivity(new Intent(getApplicationContext(), About.class));
             }
              });

}

XML ファイル

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" >

<LinearLayout
    android:id="@+id/ll1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/black" 
   android:layout_alignParentTop="true"
    android:layout_alignParentRight="true">

      <ImageView
    android:id="@+id/menu"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/menu" />
</LinearLayout>

<LinearLayout
    android:id="@+id/ll2"
    android:layout_width="199dp"
    android:layout_height="wrap_content"
    android:background="@color/black" 
    android:layout_toRightOf="@+id/ll1"
    android:visibility="gone"
    >


    <ImageView
    android:id="@+id/about"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_above="@+id/textView1"
    android:layout_toLeftOf="@+id/jobs"
    android:src="@drawable/about" />

<ImageView
    android:id="@+id/jobs"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/jobs" />

<ImageView
    android:id="@+id/log"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/log" />

<ImageView
    android:id="@+id/home"
    android:layout_width="50dp"
    android:layout_height="50dp"

    android:src="@drawable/home" />

</LinearLayout>


<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="50dip"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@color/white" 
    android:textColor="@color/white"/>

<TextView
    android:id="@+id/textView4"
    android:layout_width="match_parent"
    android:layout_height="710dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="46dp"
    android:text="@string/AboutPage"
    android:textColor="@color/white" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/ll1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="26dp"
    android:text="@string/WelcometoRebuixcom"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/white" />

4

4 に答える 4

1

コードを移動する必要があります

ImageView menu = (ImageView)findViewById(R.id.menu); 

menu.setOnClickListener(new View.OnClickListener() {}
于 2013-02-04T11:30:29.230 に答える
1

これを試して

    ImageView menu = (ImageView)findViewById(R.id.menu);
    menu.setOnClickListener(new View.OnClickListener() {


    public void onClick(View v) {............

あなたは置くべきです

      ImageView menu = (ImageView)findViewById(R.id.menu);

前に

menu.setOnClickListener
于 2013-02-04T11:30:30.510 に答える
1
 ImageView menu;
 menu.setOnClickListener(new View.OnClickListener() {
        ImageView menu = (ImageView)findViewById(R.id.menu);

これらのコード行を見てください。2番目の行はForce Closemenuの原因であり、NULLです。

のように入れ替えるだけで、

 menu = (ImageView)findViewById(R.id.menu);
 menu.setOnClickListener(new View.OnClickListener() {

アップデート:

あなたは宣言しています ImageView menu;

2行目は、 menu.setOnClickListener(new View.OnClickListener() { 定義せずImageView menuに設定setOnCLickListener()しているため、NullPointerExceptionが発生します。

したがって 、宣言後にImageView menulike を定義する必要があります。menu = (ImageView)findViewById(R.id.menu);

オブジェクトとメンバー変数を宣言および定義する方法については、基本的な Android プログラミングとコア Java チュートリアルを参照してください。プログラミングの概念が貧弱だと思います。

于 2013-02-04T11:30:39.853 に答える
1

以下のように onclick リスナーの前にイメージビューを初期化します。

 ImageView menu = (ImageView)findViewById(R.id.menu); <<---- Here
    menu.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
       menu.setVisibility(View.VISIBLE);
      // TODO Auto-generated method stub
    line1.setVisibility(View.VISIBLE);
    if (line2.getVisibility() == View.INVISIBLE || line2.getVisibility() == View.GONE) {
        line2.setVisibility(View.VISIBLE); } 
    else { 
        line2.setVisibility(View.INVISIBLE); 
    } 
      }
    });
于 2013-02-04T11:31:50.587 に答える