2016-01-26 2 views
0

У меня проблемы с моим собственным диалогом. Мне нужен диалог, который меняет текст больше раз во время моей деятельности. Из-за активности не нужен пользовательский интерфейс, я подумал, что использовать эту активность в качестве диалога является хорошей идеей. Я установил тему как @android:. Стиль/Theme.Dialog»Обновить мой текст

Это прекрасно работает Макет состоит в следующем

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    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"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Start Evaluation" 
     android:id="@+id/textView_couchdbactivity_dialog_text" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 
</RelativeLayout> 

Моя проблема я хочу сделать что-то в изменение текста этого. TextView Для примера:.

textview_couchdbactivity_dialog_text.setText("creating CouchDB"); 
    textview_couchdbactivity_dialog_text.invalidate(); 
    try { 
     dataManager = new CouchDataManager("evaluationcouchdb", this); 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } catch (CouchbaseLiteException e) 
    { 
     e.printStackTrace(); 
    } 
    textview_couchdbactivity_dialog_text.setText("resetting CouchDB"); 
    textview_couchdbactivity_dialog_text.invalidate(); 
    dataManager.reset(); 

Но текст не переходит только в конце моей деятельности текст получает изменен Как я могу решить эту проблему

..?

В настоящее время моя деятельность выглядит точно так (без любого диалога):

package de.test.dbperformancemessung; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import com.couchbase.lite.CouchbaseLiteException; 
import java.io.IOException; 
import java.util.ArrayList; 
import de.test.dbperformancemessung.Persistierung.Daten; 
import de.test.dbperformancemessung.Persistierung.CouchDB.CouchDataManager; 

public class MainActivity extends Activity implements View.OnClickListener 
{ 
    private Button button_mainactivity_start_evaluation; 
    private Button button_mainactivity_show_graph; 

    //Test 
    private CouchDataManager dataManager; 
    private ArrayList<Daten> list_data; 
    private long[] durations = new long[5]; 
    private long duration = 0; 
    private Context ctx; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button_mainactivity_start_evaluation = (Button) findViewById(R.id.button_mainactivity_start_evaluation); 
     button_mainactivity_start_evaluation.setOnClickListener(this); 
     button_mainactivity_show_graph = (Button) findViewById(R.id.button_mainactivity_show_graph); 
     button_mainactivity_show_graph.setOnClickListener(this); 
     ctx = this.getApplicationContext(); 
    } 
    @Override 
    public void onClick(View v) 
    { 
     Log.i("LOGTAG", "onClick(View v"); 
     Intent intent; 
     switch (v.getId()) 
     { 
      case R.id.button_mainactivity_start_evaluation: intent = new Intent(getApplicationContext(), CouchDBActivity.class); 
       Log.i("LOGTAG", "Show Graph"); 
       startActivity(intent); 
       break; 
      case R.id.button_mainactivity_show_graph: 
       Log.i("LOGTAG", "Show Graph"); 
       init(); 
       break; 
     } 
    } 
    public void init() 
    { 
     try { 
      dataManager = new CouchDataManager("evaluationcouchdb", ctx); 
     } catch (IOException e) 
     { 
      e.printStackTrace(); 
     } catch (CouchbaseLiteException e) 
     { 
      e.printStackTrace(); 
     } 
     dataManager.reset(); 
     list_data = new ArrayList<Daten>(); 
     RandomData randomData = new RandomData(); 
     for(int i = 0; i < 10000; i++) 
     { 
      list_data.add(randomData.getRandomData()); 
     } 
     insertFahrt1(); 
    } 
    public void insertFahrt1() 
    { 
     Log.i("LOGTAG", "insert 1.000 Daten (Fahrt1)"); 
     ArrayList<Daten> list_smallinsert = new ArrayList<Daten>(); 
     for (int i = 0; i < 1000; i++) 
     { 
      list_smallinsert.add(list_data.get(i)); 
     } 
     durations[0] = dataManager.insertDataInTable("Fahrt1", list_smallinsert, 1); 
     list_smallinsert = null; 
     Log.i("LOGTAG", "Fahrt1: " + durations[0]); 
     insertFahrt2(); 
    } 
    public void insertFahrt2() 
    { 
     Log.i("LOGTAG", "insert 10.000 Daten (Fahrt2)"); 
     durations[1] = dataManager.insertDataInTable("Fahrt2", list_data, 1); 
     Log.i("LOGTAG", "Fahrt2: " + durations[1]); 
     insertFahrt3(); 
    } 
    public void insertFahrt3() 
    { 
     Log.i("LOGTAG", "insert 1.000.000 (Fahrt3)"); 
     duration = 0; 
     for (int i = 0; i < 100; i++) 
     { 
      duration = duration + dataManager.insertDataInTable("Fahrt3", list_data, 1); 
     } 
     durations[2] = duration; 
     Log.i("LOGTAG", "Fahrt3: " + durations[2]); 
     insertFahrt4(); 
    } 
    public void insertFahrt4() 
    { 
     Log.i("LOGTAG", "insert 5.000.000 Daten (Fahrt4)"); 
     duration = 0; 
     for(int i = 0; i < 500; i++) 
     { 
      duration = duration + dataManager.insertDataInTable("Fahrt4", list_data, 1); 
     } 
     durations[3] = duration; 
     Log.i("LOGTAG", "Fahrt4: " + durations[3]); 
     insertFahrt5(); 
    } 
    public void insertFahrt5() 
    { 
     Log.i("LOGTAG", "insert 10.000.000 Daten (Fahrt5)"); 
     duration = 0; 
     for(int i = 0; i < 1000; i++) 
     { 
      duration = duration + dataManager.insertDataInTable("Fahrt5", list_data, 1); 
     } 
     durations[4] = duration; 
     Log.i("LOGTAG", "Fahrt5: " + durations[4]); 
     Log.i("LOGTAG", "All tests passed"); 
     dataManager.close(); 
    } 
} 

Что мне нужно, это диалог или что-то вроде этого, который показывает первый журнал каждого метода. Поэтому пользователь знает, что в данный момент это происходит. Лучше всего было бы без использования Threads. Я попытался вставить некоторые вещи внутри потока, но для этого требуется больше времени, не используя поток.

+0

Вам не нужно вызывать 'invalidate' вручную. Ваш код ничего не говорит. Полагаю, вы блокируете 'UI thread', а ваш' TextView' не обновляется. – eleven

+0

Хотите, чтобы я вставлял некоторые данные в db. В этом случае это кушетка DB. Возможно, это блокирует поток Ui. Я попытался сделать вставку в поток befre несколько дней. Но тогда он медленнее, чем в потоке пользовательского интерфейса. Поскольку я делаю тест производительности, я хочу иметь лучшую производительность. Есть ли все-таки, чтобы обновить текст, не выходя из вставки в обтекаемой теме? – Mike

+0

Я ничего не понял: когда вы хотите обновить TextView? Каким-то событием или таймером? –

ответ

0

Использование обработчика, чтобы обновить значение TextView по ссылке ниже

How to set Timer when button clicked?

Благодаря

+0

Внутри диалогового окна нет кнопки, поэтому для меня это не пригодно – Mike

+0

Вы также можете использовать его без кнопки, кнопка - это всего лишь пример – Androider

+0

Но тогда Я должен привести рабочий код в runnable. Я обнаружил, что вставка более медленная внутри потока, внутри asynctask ... Мне нужно решение, не помещая рабочий код в часть этого. – Mike

0

Потому что я не найти другой способ, когда я пытался поставить мой рабочий код в IntentService. Это прекрасно работает, во время работы Сервис пользователь видит, что ProgressDialog, который обновляется из активности, бросил Broadcastreceiver. Служба отправляет трансляции в мою активность, а затем Activity обновляет progressdialog.

Смежные вопросы