簡體   English   中英

單擊選項菜單中的項目,應用程序崩潰

[英]Application crashes on clicking the item in Options Menu

在此處輸入圖片說明 我正在開發一個名為“ MyBMI”的android應用程序。 我在選項菜單中創建了一個名為“關於MyBMI”的項目,單擊該項目會將用戶轉到另一個名為“ AboutActivity”的活動。 但是,當我在選項菜單中單擊“關於MyBMI”時,我的應用程序崩潰了。 請幫忙。

package com.mavenmaverick.mybmi;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.Menu;
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;



public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    final EditText entermass = (EditText) findViewById(R.id.entermass);
    final EditText enterheight = (EditText) findViewById(R.id.enterheight);
    entermass.requestFocus();

    Button BMI = (Button) findViewById(R.id.BMI);
    BMI.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if(TextUtils.isEmpty(entermass.getText().toString()) || TextUtils.isEmpty(enterheight.getText().toString()))
            {
                if(TextUtils.isEmpty(entermass.getText().toString()) || TextUtils.isEmpty(enterheight.getText().toString()))
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setIcon(R.drawable.ic_launcher);
                    builder.setTitle("Developer's Check");
                    builder.setMessage("Either Of The Text Fields Are Empty");

                    builder.setPositiveButton("OKAY", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            dialog.cancel();

                        }

                    });

                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
                    }
            else {
            double d = 0;
            double mass = Double.valueOf(entermass.getText().toString());           
            double height = Double.valueOf(enterheight.getText().toString());
            double heightF;
            heightF=height*0.3048;
            double bmi = mass/(heightF*heightF);
            d=bmi;
            int display = (int) bmi;

            Toast toast=Toast.makeText(getApplicationContext(), "Your BMI is " +display, Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);
            toast.show();   
                if(d<15.0)
                {
                    Toast.makeText(MainActivity.this,"You Are Very Severely Underweight", Toast.LENGTH_LONG).show();
                }   
                else if(d>=15.0 && d<=16.0){

                Toast.makeText(MainActivity.this,"You Are Severely Underweight", Toast.LENGTH_LONG).show();
                }
                else if(d>=15.0 && d<=16.0){

                Toast.makeText(MainActivity.this,"You Are Severely Underweight", Toast.LENGTH_LONG).show();
                }
            else if(d>=16.0 && d<=18.5){

                Toast.makeText(MainActivity.this,"You Are Severely Underweight", Toast.LENGTH_LONG).show();
                }
            else if(d>=18.5 && d<=25.0){

                Toast.makeText(MainActivity.this,"You Are Normal (healthy weight)", Toast.LENGTH_LONG).show();
                }
            else if(d>=25.0 && d<=30.0){

                Toast.makeText(MainActivity.this,"You Are Overweight", Toast.LENGTH_LONG).show();
                }
            else if(d>=30.0 && d<=35.0){

                Toast.makeText(MainActivity.this,"You Are Obese Class I (Moderately obese)", Toast.LENGTH_LONG).show();
                }
            else if(d>=35.0 && d<=40.0){

                Toast.makeText(MainActivity.this,"You Are Obese Class II (Severely obese)", Toast.LENGTH_LONG).show();
                }
            else if(d>40.0){

                Toast.makeText(MainActivity.this,"You Are Obese Class III (Very severely obese)", Toast.LENGTH_LONG).show();
                }
        }
        }   

    });

};
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);
    startActivity(new Intent(this, AboutActivity.class));
    return true;
}

};

只是一個猜測,但您是否已將有關活動的信息添加到清單中?

好的,我認為您的位圖空間已用完。 您需要開始回收您的位圖! 將有一個名為.Recycle()的位圖方法,您可以在更改活動之前執行該方法! 這有望解決您的問題!

或您正在加載的位圖太大。。希望這會有所幫助!

stacktrace表示:您的活動具有一個RelativeLayout ,該背景的背景可繪制對象太大且會導致內存不足。 使圖像更小以使其消耗更少的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM