Изменить Android "Загрузка .." текст - PullRequest
1 голос
/ 29 октября 2011

Так что это, вероятно, простая вещь, которую я пытаюсь сделать, но я пытаюсь заставить отображаться экран загрузки Android по умолчанию, и вместо этого появляется текст "Потребление ..." Я делаю это на основе учебник в Android Cookbook. Вот мой код и XML-файлы. Если вам нужны другие кусочки кода, просто дайте мне знать. Я, честно говоря, возможно, делаю что-то глупое, но мне просто нужно знать. В logcat ничего не происходит, поэтому я уверен, в чем проблема. Хотя книга может быть просто устаревшей. Следует также отметить, что у меня работает Android 2.2, и я тестирую на Samsung Galaxy 4G.

Так что, я думаю, нужно немного больше информации. Я пытаюсь следовать рецепту «Обработка трудоемкой инициализации» в поваренной книге разработчика Android: http://bit.ly/sFoBn6 Я просто хочу простой экран заставки текста. Даже индикатор прогресса. Мы говорим просто глупо прямо сейчас. Я все еще изучаю Android. Я просто хочу, чтобы он выполнял обычную «Загрузка ..», но вместо этого сказал «Потребление ...»

HandleMessage.java

package com.cookbook.handle_message;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class HandleMessage extends Activity implements Runnable {
    /** Called when the activity is first created. */
    TextView mTestLabel;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTestLabel = (TextView) findViewById(R.id.test);

        Thread thread = new Thread(this);
        thread.start();
    }

    private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            setContentView(R.layout.main);
        }
    };

    public void run() {
        initializeArrays();
        mHandler.sendEmptyMessage(0);
    }

    final static int NUM_SAMPS = 1000;
    static double[][] correlation;

    void initializeArrays() {
        if(correlation!=null) return;

        correlation = new double[NUM_SAMPS][NUM_SAMPS];
        for(int k=0; k<NUM_SAMPS; k++){
            for(int m=0; m<NUM_SAMPS; m++){
                correlation[k][m] = Math.cos(2*Math.PI*(k+m)/1000);
            }
        }
    }
}

Рез / макет / main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/test"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

Рез / макет / loading.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/loading"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Consuming..."/>
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cookbook.handle_message"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".HandleMessage" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

1 Ответ

0 голосов
/ 29 октября 2011

Может быть, вы просто хотите индикатор прогресса или что-то?См. на этой странице для примера , который показывает, как запустить действие с долго работающим потоком, который обновляет индикатор выполнения по мере его продвижения.

Кроме того, вы указали, что LogCat ничего не говорит.Поместите несколько операторов Log.i в свой код, чтобы увидеть, что происходит.

РЕДАКТИРОВАТЬ: Хорошо, в вашем коде выше, не используйте 2 макета.Используйте только 1. Затем в вашем обработчике измените текст textview.

Так что если вы используете loading.xml, установите это в onCreate, а затем в вашем обработчике просто сделайте что-то вроде:

 public void handleMessage(Message msg) {
        TextView tv=(TextView)findViewById(R.id.loading);
        tv.setText("All Done");
    }

Получите это?Определенно не вызывайте setContentView дважды для такого рода вещей.Может быть способ сделать это, так что, возможно, у него есть свои применения, но я никогда не делал этого.Кроме того, как примечание, я начал использовать AsyncTask вместо потоков и обработчиков для некоторых вещей.

Кроме того, когда что-то не работает, добавьте операторы Log, чтобы вымогу сказать, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...