Добавлен текстовый код, сбой приложения в эмуляторе - PullRequest
0 голосов
/ 27 декабря 2011

Я работаю над проектом домашней работы, который требует наличия счетчика текстового просмотра вместе с существующим индикатором выполнения.Я добавил код textview в файл java и main.xml.Когда я запускаю его в эмуляторе, я получаю сообщение «Приложение xxx неожиданно остановилось».Я не смог выяснить причину.Вот мой код: (Отступ кода не совсем правильный. Я постараюсь сделать это так) Исходный файл:

package com.mypackage;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MyButtonActivity extends Activity {
   static final int PROGRESS_DIALOG = 0;
   Button button;
   ProgressThread progressThread;
   ProgressDialog progressDialog;
   TextView Int;

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Int = (TextView)findViewById(R.id.Int);

    // Setup the button that starts the progress dialog
    button = (Button) findViewById(R.id.myButton);
    button.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v) {
            // Show dialog managed by this activity
            showDialog(PROGRESS_DIALOG);
        }
    }); 
}

// Callback for creating dialogs that are managed (saved and restored) 
// for you by the activity. 
protected Dialog onCreateDialog(int id) {
    switch(id) {
    case PROGRESS_DIALOG:
        progressDialog = new ProgressDialog(MyButtonActivity.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMessage("Loading...");

        // Create and start the handler
        progressThread = new ProgressThread(handler);
        progressThread.start();

        return progressDialog;
    default:
        return null;
    }
}

// Define the Handler that receives messages from the thread and update 
// the progress
final Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        int total = msg.getData().getInt("total");
        progressDialog.setProgress(total);
        Int.setText(String.valueOf(total));

        if (total >= 100){
            dismissDialog(PROGRESS_DIALOG);
            progressThread.setState(ProgressThread.STATE_DONE);
        }
    }
};

/** Nested class that performs progress calculations (counting) */
private class ProgressThread extends Thread {
    Handler mHandler;
    final static int STATE_DONE = 0;
    final static int STATE_RUNNING = 1;
    int mState;
    int total;

    ProgressThread(Handler h) {
        mHandler = h;
    }

    public void run() {
        mState = STATE_RUNNING;   
        total = 0;
        while (mState == STATE_RUNNING) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                Log.e("ERROR", "Thread Interrupted");
            }
            Message msg = mHandler.obtainMessage();
            Bundle b = new Bundle();
            b.putInt("total", total);
            msg.setData(b);
            mHandler.sendMessage(msg);
            total++;
        }
    }

    /* sets the current state for the thread,
     * used to stop the thread */
    public void setState(int state) {
        mState = state;
    }

}

Я добавил только несколько строк в существующий код (включая просмотр текста в main.xml).Так что это более сложное, чем просто добавление кода textview для реализации счетчика textview?Учитывая, что это один из первых проектов в моем вводном курсе, я думаю, что простое добавление textview должно удовлетворять требованию.Пожалуйста, просветите.Спасибо!

1 Ответ

0 голосов
/ 27 декабря 2011

Я проверил ваш код, и он работал на меня!Пытались ли вы:

  1. Под панелью Eclipse Project-> Clean Project
  2. Щелкните правой кнопкой мыши свой проект Инструменты Android-> Исправить свойства проекта
...