У меня проблемы с моим собственным диалогом. Мне нужен диалог, который меняет текст больше раз во время моей деятельности. Из-за активности не нужен пользовательский интерфейс, я подумал, что использовать эту активность в качестве диалога является хорошей идеей. Я установил тему как @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. Я попытался вставить некоторые вещи внутри потока, но для этого требуется больше времени, не используя поток.
Вам не нужно вызывать 'invalidate' вручную. Ваш код ничего не говорит. Полагаю, вы блокируете 'UI thread', а ваш' TextView' не обновляется. – eleven
Хотите, чтобы я вставлял некоторые данные в db. В этом случае это кушетка DB. Возможно, это блокирует поток Ui. Я попытался сделать вставку в поток befre несколько дней. Но тогда он медленнее, чем в потоке пользовательского интерфейса. Поскольку я делаю тест производительности, я хочу иметь лучшую производительность. Есть ли все-таки, чтобы обновить текст, не выходя из вставки в обтекаемой теме? – Mike
Я ничего не понял: когда вы хотите обновить TextView? Каким-то событием или таймером? –