T
Tobls22
Neues Mitglied
- 0
Hi bin gerade dabei eine App zu programmieren bei der sich ein Wert pro sekunde um 1 erhöht und man den Wert auf einem Textview sieht.
Nun habe ich aber das Problem, dass sich der Wert im Log höchzählt aber sich der Textview nur aktualisiert, wenn ich auf einen Knopf drücke oder eine andere Aktion mache.
Hier ist mein Code:
public class MainActivity extends ActionBarActivity {
public int variable = 1;
public TextView tv1;
public int Wert = 0;
public int Erhöhung = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int variable = 1;
TextView tv1;
int Wert = 0;
int Erhöhung = 1;
tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText(Integer.toString(variable));
Thread t = new Thread(r);
t.start();
}
Runnable r = new Runnable() {
@Override
public void run() {
while(true) {
try {
variable = variable + Erhöhung;
Thread.sleep(1000);
Log.d("variable: ",Integer.toString(variable));
tv1.setText(Integer.toString(variable));
}
catch (Exception e) {
e.printStackTrace();
Log.d("variable: ",Integer.toString(variable));
tv1.setText(Integer.toString(variable));
}
}
}
};
Und hier der Error den ich im Log bekomme:
02-21 11:14:45.837 2187-2205/de.tobls.test D/variable: 16
02-21 11:14:45.837 2187-2205/de.tobls.test W/System.err android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
02-21 11:14:45.837 2187-2205/de.tobls.test W/System.err at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.ViewGroup.invalidateChild(ViewGroup.java:4637)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidateInternal(View.java:11690)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidate(View.java:11654)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidate(View.java:11638)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.widget.TextView.checkForRelayout(TextView.java:6842)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:4047)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:3905)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:3880)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at de.tobls.test.MainActivity$1.run(MainActivity.java:51)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at java.lang.Thread.run(Thread.java:818)
02-21 11:14:45.840 2187-2205/de.tobls.test D/variable: 16
hoffe mir kann da wer helfen
Nun habe ich aber das Problem, dass sich der Wert im Log höchzählt aber sich der Textview nur aktualisiert, wenn ich auf einen Knopf drücke oder eine andere Aktion mache.
Hier ist mein Code:
public class MainActivity extends ActionBarActivity {
public int variable = 1;
public TextView tv1;
public int Wert = 0;
public int Erhöhung = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int variable = 1;
TextView tv1;
int Wert = 0;
int Erhöhung = 1;
tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText(Integer.toString(variable));
Thread t = new Thread(r);
t.start();
}
Runnable r = new Runnable() {
@Override
public void run() {
while(true) {
try {
variable = variable + Erhöhung;
Thread.sleep(1000);
Log.d("variable: ",Integer.toString(variable));
tv1.setText(Integer.toString(variable));
}
catch (Exception e) {
e.printStackTrace();
Log.d("variable: ",Integer.toString(variable));
tv1.setText(Integer.toString(variable));
}
}
}
};
Und hier der Error den ich im Log bekomme:
02-21 11:14:45.837 2187-2205/de.tobls.test D/variable: 16
02-21 11:14:45.837 2187-2205/de.tobls.test W/System.err android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
02-21 11:14:45.837 2187-2205/de.tobls.test W/System.err at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.ViewGroup.invalidateChild(ViewGroup.java:4637)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidateInternal(View.java:11690)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidate(View.java:11654)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.view.View.invalidate(View.java:11638)
02-21 11:14:45.838 2187-2205/de.tobls.test W/System.err at android.widget.TextView.checkForRelayout(TextView.java:6842)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:4047)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:3905)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at android.widget.TextView.setText(TextView.java:3880)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at de.tobls.test.MainActivity$1.run(MainActivity.java:51)
02-21 11:14:45.839 2187-2205/de.tobls.test W/System.err at java.lang.Thread.run(Thread.java:818)
02-21 11:14:45.840 2187-2205/de.tobls.test D/variable: 16
hoffe mir kann da wer helfen