Как получить доступ к Activity UI из моего класса?
У меня есть действие, которое создает экземпляр объекта моего класса:
file MyActivity.java:
public class MyActivity extends Activity {
TextView myView = (TextView)findViewById(R.id.myView);
...
Points myPoints new Points();
...
}
--------------------------------------------------------------
file Points.java:
private class Points {
...
HOW TO USE myView HERE ???
...
}
--------------------------------------------------------------
Как использовать объекты UI в моем классе (который не расширяет Активность)? Должен ли я передать некоторый контекст в мой класс Points? Как именно я это делаю?
6 ответов
см. сообщение, я отредактировал его, чтобы исправить проблему
надеюсь, что это помогает :=)
вот редактирование :
file MyActivity.java:
public class MyActivity extends Activity {
TextView myView ;
protected void onCreate(android.os.Bundle savedInstanceState) {
myView = (TextView)findViewById(R.id.myView);
Points myPoints = new Points(this);
myPoints.displayMsg("Hello World !!!");
}
}
--------------------------------------------------------------
file Points.java:
private class Points {
protected MyActivity context;
//add a constructor with the Context of your activity
public Points(MyActivity _context){
context = _context;
}
public void displayMsg( final String msg){
context.runOnUiThread(new Runnable() {
@Override
public void run() {
context.myView.setText(msg);
}
});
}
}
- код
Points
не может быть частным классом, не будучи внутренним классом. Поэтому ваш код даже не компилируется... -
передайте представление как параметр конструктору вашего
Points
класс:public class MyActivity extends Activity { TextView myView = (TextView)findViewById(R.id.myView); Points myPoints new Points(myView); private class Points { public Points(TextView view) { // todo } } }
вы должны сделать все и передать значение в действие для обработки пользовательского интерфейса вместо того, чтобы делать какие-либо связанные с пользовательским интерфейсом вещи в point stuff.
вы можете передать контекст основного действия (используя Points(getApplicationContext());
) в класс в качестве параметра конструктора. Вы также можете передать определенные элементы пользовательского интерфейса, которыми хотите управлять.
лучший способ, чтобы сделать это, однако, может быть Points
Не знаю о своей деятельности. Ваши действия назвать Points
методы и выполните необходимые действия на основе вывода метода.
вы можете просто передать представление своему классу.
Points myPoints = new Points(myView);
private class Points
{
private TextView mTextView;
Points(TextView textView)
{
this.mTextView = textView;
}
}
Я был в такой же беде.. я нашел простой способ..
- создать статическую переменную и функцию ...
- звонок из другого класса..
TestActivity.java
public class TestActivity extends Activity {
static EditText edit_text1;
public void onCreate(Bundle savedInstanceState)
{
.....
edit_text1 = (EditText) findViewById(R.id.edit_text1);
.....
}
public static void setMSG(String str)
{
edit_text1.setText(str);
}
}
Условие_2.java
TestActivity.setMSG("this is text");