-3

我的应用程序的所有页面中都有一个“菜单”图像视图,如果单击菜单,所有菜单项(如登录、主页、工作、关于)都会打开,如果我单击“关于”菜单项,应用程序会强制关闭并获取“菜单的 OnClicklistener”出现空指针异常,但其他菜单项没有此问题,请问有人可以解决这个问题吗?

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

看看这些代码行,第二个是Force Close的原因,NULLmenu也是。

像这样互换,

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

更新:

你在声明 ImageView menu;

现在第二行, 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,如下所示:

 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 回答