Logcat в Android показывает простое выключение виртуальной машины?

Вчера он работал отлично, но сегодня показывает сообщение «к сожалению, приложение остановлено», а логарифм показывает «выключение виртуальной машины».

Трассировка стека этого приложения..

11-27 13:24:17.035: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.455: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.485: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.485: D/AndroidRuntime(806): Shutting down VM
11-27 12:30:51.683: D/AndroidRuntime(734): Shutting down VM
11-27 12:30:51.943: D/dalvikvm(734): GC_CONCURRENT freed 137K, 9% free 2625K/2880K,paused23ms+7ms, total 230ms
11-27 12:37:12.259: D/dalvikvm(878): newInstance failed: p0 i0 [0 a1
11-27 12:37:12.259: D/AndroidRuntime(878): Shutting down VM
11-27 12:43:22.839: D/dalvikvm(939): newInstance failed: p0 i0 [0 a1
11-27 12:43:22.878: D/AndroidRuntime(939): Shutting down VM

это программа..

package com.raghuram.simplecalculator;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public abstract class CalculatorActivity extends Activity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);
        OnClickListener addlisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);
                    Float res=Float.parseFloat(tx1.getText().toString()) + Float.parseFloat(tx2.getText().toString());                  
                    tx3.setText(Float.toString(res));


                }
        };

        ImageButton a=(ImageButton) findViewById(R.id.imageButton1);
        a.setOnClickListener(addlisten);

        OnClickListener sublisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);                   
                    Float res1=Float.parseFloat(tx1.getText().toString()) - Float.parseFloat(tx2.getText().toString());                 
                    tx3.setText(Float.toString(res1));

                }
        };

        ImageButton s=(ImageButton) findViewById(R.id.imageButton2);
        s.setOnClickListener(sublisten);

        OnClickListener mullisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);                   
                    Float res1=Float.parseFloat(tx1.getText().toString()) * Float.parseFloat(tx2.getText().toString());                 
                    tx3.setText(Float.toString(res1));

                }
        };

        ImageButton m=(ImageButton) findViewById(R.id.imageButton3);
        m.setOnClickListener(mullisten);

        OnClickListener divlisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);
                    Float x=Float.parseFloat(tx2.getText().toString());

                        if(x>0)
                        {
                            Float res1=Float.parseFloat(tx1.getText().toString()) / Float.parseFloat(tx2.getText().toString());                 
                            tx3.setText(Float.toString(res1));
                        }
                        else
                        {

                            Context context = getApplicationContext();
                            CharSequence text = "Invalid number.";
                            int duration = Toast.LENGTH_SHORT;

                            Toast toast = Toast.makeText(context, text, duration);
                            toast.show();

                        }

                }




        };

        ImageButton d=(ImageButton) findViewById(R.id.imageButton4);
        d.setOnClickListener(divlisten);


        ImageButton e=(ImageButton) findViewById(R.id.imageButton5);        
        e.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) 
            {

                System.exit(0);
            }

        });

    }





    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_calculator, menu);
        return true;
    }

}

Вчера показывал точные результаты, а сейчас принудительно закрылся.. как управлять памятью.


person AndRaGhu    schedule 27.11.2012    source источник
comment
Пожалуйста, дайте более подробную информацию и код.   -  person Mohamed_AbdAllah    schedule 27.11.2012
comment
Пожалуйста, опубликуйте трассировку стека для исключения из logcat. Это будет перед частью, которую вы показали.   -  person Simon    schedule 27.11.2012
comment
только сейчас отредактировал вопрос, в чем будет проблема.?   -  person AndRaGhu    schedule 27.11.2012


Ответы (1)


Удалите abstract перед названием вашего класса.

И true, чтобы остановить вашу активность, вызвав finish() вместо System.exit(0).

person Ion Aalbers    schedule 27.11.2012
comment
Вы не получаете трассировку стека? - person Ion Aalbers; 27.11.2012
comment
Я узнал из сети, что просто дважды щелкните строку log cat, чтобы отобразить строки трассировки стека в окне log cat. - person AndRaGhu; 27.11.2012
comment
FWIW, Class.newInstance() завершится ошибкой, если создаваемый класс является примитивным (например, int или float), интерфейсом, массивом или абстрактным. Эти четыре элемента идентифицируются в довольно неясном сообщении newInstance failed: p0 i0 [0 a1, которое в данном случае означает, что newInstance не удалось, поскольку его попросили создать экземпляр абстрактного класса. - person fadden; 28.11.2012