setOnClickListener使Force Close

时间:2012-07-19 16:25:59

标签: android layout button forceclose

当我启动应用程序并单击按钮转到活动时,我突然收到强制关闭。我试图将它全部删除并再次写入,但它仍然存在。可能是什么问题?

package com.alexgascon.formuladora; 

import android.app.Activity;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;



public class Matematicas extends Activity {

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    final Button BtnEcSegundoGrado = (Button)findViewById(R.id.ecsegundogrado);
    final Button BtnFracciones = (Button)findViewById(R.id.fracciones);
    final Button BtnMCD = (Button)findViewById(R.id.maximocomunBoton);


    BtnMCD.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            Intent MCDintent = new Intent(Matematicas.this,Maximocomun.class);
            startActivity(MCDintent);

        }


    });

}
}

这是布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@drawable/pizarramatesverde"
 android:gravity="center" >

<Button
    android:id="@+id/ecsegundogrado"
    android:layout_height="wrap_content"
    android:layout_width="265sp"
    android:text="@string/ecsegundo"
    android:textColor="@color/Negro"
    />
<Button
    android:id="@+id/fracciones"
    android:layout_height="wrap_content"
    android:layout_width="265sp"
    android:text="@string/fracciones"
    android:layout_below="@id/ecsegundogrado"
    android:textColor="@color/Negro"
    />

<Button
    android:id="@+id/maximocomunBoton"
    android:layout_height="wrap_content"
    android:layout_width="265sp"
    android:text="@string/maximocomun"
    android:layout_below="@id/fracciones"
    android:layout_marginBottom="80sp"
    android:textColor="@color/Negro"
    />



</RelativeLayout>

4 个答案:

答案 0 :(得分:3)

您需要在setContentView之前致电findViewById

setContentView(R.layout.yourlayoutxmlname);
final Button BtnEcSegundoGrado = (Button)findViewById(R.id.ecsegundogrado);
final Button BtnFracciones = (Button)findViewById(R.id.fracciones);
final Button BtnMCD = (Button)findViewById(R.id.maximocomunBoton);

答案 1 :(得分:2)

您需要致电setContentView(R.layout.yourxmlLayout);以在您的活动类中引用该布局。

答案 2 :(得分:0)

尝试从点击侦听器弹出一个toast,看看它是否有效。如果确实如此 - 则问题出在您要启动的活动中。

答案 3 :(得分:0)

您需要添加setContentView(R.layout.yourlayoutxmlname);

请尝试以下代码:

package com.alexgascon.formuladora; 

import android.app.Activity;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Matematicas extends Activity {
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourlayoutxmlname);

        final Button BtnEcSegundoGrado = (Button)findViewById(R.id.ecsegundogrado);
        final Button BtnFracciones = (Button)findViewById(R.id.fracciones);
        final Button BtnMCD = (Button)findViewById(R.id.maximocomunBoton);

        BtnMCD.setOnClickListener( new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                Intent MCDintent = new Intent(Matematicas.this,Maximocomun.class);
                startActivity(MCDintent);
            }
        });
    }
}