如何从屏幕的其他部分动态更改TextView的内容?
我有一个TabActivity类,它绘制了一个包含一个TextView和带有多个选项卡的 的RelativeLayout布局。每个选项卡都有一个单独的Intent。我想从其中一个选项卡意图中更改父TabActvity的TextView文本(通过.setText)。
这可能吗?
LiveData<String>
)。Activity
或Fragment
更改你的live data对象时,所有观察此live data对象的其他Activities和Fragments都会收到通知。
官方API文档有完整的示例和描述。在您的TabActivity中创建一个公共方法来设置TextView的文本,然后从子活动调用getParent()
,将其转换为TabActivity类,然后调用该公共方法。
OnReadyListener onReadyListener;
public class ABCAsynctaskFile{
...
onReadyListener.onReady();
}
public interface OnReadyListener{
void onReady();
}
public void setOnReadyListener(OnReadyListener onReadyListener){
this.onReadyListener = onReadyListener;
}
活动文件:
public class ABC extends AppCompactActivity implements ABCAsynctaskFile.OnReadyListener{
..
ABCAsynctaskFile aBCAsynctaskFileObj = new ABCAsynctaskFile(context);
aBCAsynctaskFile.setOnReadyListener(ABC.this)
}
@Override
public void onReady(){
// Your wished changed in edit text.
}
这个结构将帮助您防止空指针异常。
你可以尝试为父选项卡实现一个处理程序来完成这项工作。从各自的选项卡中通过消息对象传递文本。为了安全起见,在处理程序内部进行更改时,请在runOnUI块中进行。
TextView
。 - Jason Robinson尝试在空对象引用上调用虚拟方法'void android.widget.TextView.setText(int)'
- Shailesh