致命异常:主要在Android应用程序上

时间:2014-05-18 12:48:43

标签: android

我的项目有问题。如果你能解决这个问题,请帮助我..

这是主要代码

import android.app.Activity;
import android.app.Dialog;
import android.content.pm.ActivityInfo;
import android.util.FloatMath;
import android.util.Log;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.lang.Math;

import com.kalkulator.R;

public class MainActivity extends Activity implements OnClickListener {

private String str1="",str2="",str3="",op="";
private Float num1,num2,num3,num4,num5;
private long a,b=1;
EditText ed;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    ed=(EditText)findViewById(R.id.EditText01);
    View[] keys=new View[30];

     keys[0]= findViewById(R.id.button1);
     keys[1]= findViewById(R.id.button2);
     keys[2]= findViewById(R.id.button3);


    for(int i=0;i<keys.length;i++)
    {
        keys[i].setOnClickListener(this);
    }
    ed.setText("");
}


public void onClick(View v) {

    switch(v.getId())
    {
        case R.id.button1:
            str3=ed.getText().toString();
            if(str3.contains("E"))
            {
                Toast.makeText(getApplicationContext(),"Factorial limit is upto 25", Toast.LENGTH_SHORT).show();
                break;
            }
            a=Long.parseLong(str3);
            if(a>25)
            {
                Toast.makeText(getApplicationContext(),"Factorial limit is upto 25", Toast.LENGTH_SHORT).show();
                break;
            }
            for(long i=1;i<=a;i++)
            {
                b*=i;
            }
            ed.setText(String.valueOf(b));
            b=1;
            break;

......          

这是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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<EditText
    android:id="@+id/EditText01"
    android:layout_width="fill_parent"
    android:layout_height="40dip"
    android:layout_alignParentRight="true"
    android:layout_gravity="right"
    android:cursorVisible="false"
    android:gravity="right"
    android:textStyle="italic" >
</EditText>

<TableLayout
android:id="@+id/TableLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/EditText01"
android:layout_below="@+id/EditText01"
android:layout_marginTop="28dp"
android:stretchColumns="*" >

<TableRow
    android:id="@+id/TableRow02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="n!" />
.......

我不知道为什么,但是当我在AVD_for_3_7_FWVGA_slide上运行这个项目时,我有关于日志cat FATAL EXCEPTION:Main的通知。

由于

1 个答案:

答案 0 :(得分:1)

//setContentView(R.layout.main);不得发表评论,您应该考虑将方向移至AndroidManifest文件

另外,

 keys[0]= findViewById(R.id.button1);
 keys[1]= findViewById(R.id.button2);
 keys[2]= findViewById(R.id.button3);


for(int i=0;i<keys.length;i++)
{
    keys[i].setOnClickListener(this);
}
ed.setText("");

您在keys值上使用index&gt;调用findViewById它会让你产生NullPointerException。