从另一个活动更改文本

12

如何从屏幕的其他部分动态更改TextView的内容?

我有一个TabActivity类,它绘制了一个包含一个TextView和带有多个选项卡的 的RelativeLayout布局。每个选项卡都有一个单独的Intent。我想从其中一个选项卡意图中更改父TabActvity的TextView文本(通过.setText)。

这可能吗?

4个回答

27

4
请注意,这会更改堆栈上该类的每个实例的TextView - Jason Robinson
5
不要将 Android 的上下文类放在静态字段中,否则会导致内存泄漏(并且还会破坏即时运行)。如果将其设为静态的,在 Android Studio 中会收到此警告。是否有更好的解决方案? - Anees U
给我一个空指针异常。尝试在空对象引用上调用虚拟方法'void android.widget.TextView.setText(int)' - Shailesh
@AneesU 同意,更新了过时和不正确的答案 :) - Vaibhav Jani

6

在您的TabActivity中创建一个公共方法来设置TextView的文本,然后从子活动调用getParent(),将其转换为TabActivity类,然后调用该公共方法。


哇,这是个好主意,把所有东西都保留在TabActivity类中。我也一定会尝试这样做的。 - ehymel

0
在更改异步任务文件中的文本时,您需要实现带有监听器的接口。例如: 异步任务文件:
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.

}

这个结构将帮助您防止空指针异常。


0

你可以尝试为父选项卡实现一个处理程序来完成这项工作。从各自的选项卡中通过消息对象传递文本。为了安全起见,在处理程序内部进行更改时,请在runOnUI块中进行。


1
谢谢...我其实也考虑过这个并尝试了,但可能实施得不正确。好建议。 - ehymel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接