Hallo Community,
ich bin neu in der Welt der Android-Programmierung und dies ist mein erster Thread.
Ich versuche gerade die UI über eine eigene Klasse außerhalb der MainActivity zu aktualisieren.
An diese Klasse reiche ich Moment getApplicationContext durch und ermittele daran die ID's der Controls.
Dies funktioniert soweit. Allerdings, wenn ich versuche die Oberfläche über diese Klasse anzupassen wird die UI nicht angepasst.
Laut meinen Log-Ausgabe wird die UI zwar gesetzt. Allerdings ist diese Änderung nicht sichtbar.
Was mache ich falsch?
Hier ein extrem vereinfachtest Beispiel.
package de.jstk.iu_test;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private static Context mContext;
public static Context getContext() {
return mContext;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext = getApplicationContext();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_button;
btn_button = (Button) findViewById(R.id.btn_button);
btn_button.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("UI", "onClick: btn_button");
Test x = new Test();
}
}
);
}
}
Alles anzeigen
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txt_text" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:id="@+id/btn_button"
android:layout_below="@+id/txt_text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
Alles anzeigen
package de.jstk.iu_test;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
public class Test {
public static View getRoot() {
LayoutInflater inflater = (LayoutInflater) MainActivity.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return (View) inflater.inflate(R.layout.activity_main, null);
}
Test() {
View r = (View) this.getRoot();
TextView t = (TextView) r.findViewById(R.id.txt_text);
Log.d("Test", "Inhalt des Buttons: btn_button --> "+t.getText());
t.setText(new StringBuilder("Test"));
Log.d("Test", "Inhalt des Buttons: btn_button --> "+t.getText());
}
}
Alles anzeigen
Noch eine zweite Frage:
Wie kann ich für jedes Layout eine eigene Activityklasse anlegen in der Listener usw. plaziert werden.
Bislang habe ich immer alle über die MainActivity.java abgebildet, was bei viel Code lässtig wird.
Ich freue mich auf Antworten
Julian.