Метод интерфейса не может изменить текст TextView в Android
Я использую сервис Android. Я хочу изменить текст TextView, когда я получу ожидаемый результат от службы. Я реализовал метод интерфейса, чтобы получить обратный вызов для изменения моего textView. Абстрактный интерфейсный метод работает хорошо, но не может изменить текст Textview моей деятельности.
Я упростил пример кода здесь
public class MainActivity extends Activity implements MyInterface {
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.sample_text);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("Asim----", "Start service"); // print this line well
startService(new Intent(MainActivity.this, MyService.class));
}
});
}
@Override
public void testMe() {
Log.e("Asim----", "Hi"); // print this line well
mTextView.setText("New Text"); // Chrashes happens here
}
}
Класс MyService здесь
public class MyService extends Service {
@Override
public void onCreate() {
//super.onCreate();
Log.e("test1------", "onCreate"); // print this line well
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("test2------", "onStartCommand"); // print this line well
MyInterface mi = new MainActivity();
mi.testMe();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
2 ответа
Вам нужно передать активность в вашем интерфейсе, а также
@Override
public void testMe(Activity actvity) {
Log.e("Asim----", "Hi"); // print this line well
mTextView = (TextView) activity.findViewById(R.id.sample_text);
mTextView.setText("New Text"); // Chrashes happens here
}
mTextView
должно быть null
Вы должны найти это в этом методе
@Override
public void testMe() {
Log.e("Asim----", "Hi"); // print this line well
mTextView = (TextView) findViewById(R.id.sample_text);
mTextView.setText("New Text"); // Chrashes happens here
}
Попробуйте это один раз.