- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了奇怪的行为,我怀疑是错误,但也许我忽略了一些东西。帖子末尾的代码 fragment 。我也可以发布 .xml,但我认为没有必要了解这个问题。
我有一个水平线性布局,我根据玩家数量添加了 TableLayouts。
表格布局包含几个字段,TextView、EditText、Buttons 等。
当我初始化每个 TableLayout 时,我将它添加到 LinearLayout(通过 xml 膨胀),然后初始化字段。
问题是,EditText 字段总是会更新最新的玩家信息。据我所知,我对 setText 的调用正在传递给每个 EditText。
我在父 TableLayout 上使用 findViewById 找到 EditText(实际上是祖 parent ,因为有一个 TableRow。
EditText id 在整个树中不是唯一的,但从表布局的角度来看是唯一的。
可能的原因:1)当我找到错误的 EditText View 时:这不可能。我更改了我的代码以发布我在 TEXTVIEW 中获得的 EditTextView 的 objectID,并且我获得了唯一的对象 ID。将完全相同的 myEditText.toString() 发布到 EditText,我得到了上次使用的对象 ID 的重复值。重申一下,只要字段是 TextView,就可以使用完全相同的 findView 逻辑,只要它是 EditText,就会显示“多个”setText 行为。
2) 当我在 xml 中将字段从 EditText 更改为 TextView,然后简单地将我的转换从 EditText 更改为 TextView,一切都按预期运行。
3) 在我的 onClickListeners 中进行的类似查找尝试按预期运行。
4) 我已经尝试在初始化之前和之后将 View 添加到线性布局 - 相同的行为。我想知道这是否是底层对象的操作顺序,因为它适用于监听器,但我仍然遗漏了一些东西。
问题:1)这对其他人来说看起来像个错误吗?2) 建议的解决方法?
3) 知道为什么当我搜索我的顶级对象时它在我的听众中起作用,但在我的初始化代码中却不起作用,在那里我明确地拥有我的顶级对象(顶级对象是我膨胀的 TableLayout。
代码 fragment :
onCreate 初始化代码:
TableLayout tl = (TableLayout)inflater.inflate(R.layout.playerpanel, llayout, false);
InitializePlayer(player1,tl);
llayout.addView(tl);
InitializePlayer Snippet - 事情发生的地方:
public void InitializePlayer(Player p, TableLayout tl)
{
players.add(p);
tl.setTag(p);
//INITIALIZE LISTENERS HERE - SNIPPED FOR READABILITY
TextView scoreLabel = (TextView)tl.findViewById(R.id.currentScore);
EditText curPoints = (EditText)tl.findViewById(R.id.scoreEntry);
curPoints.setText(p.getScore());
EditText playerEntry = (EditText)tl.findViewById(R.id.playerName);
playerEntry.setText(tl.toString());
//CONFIRMING UNIQUE OBJECTS HERE should actually be p.getScore()
scoreLabel.setText(playerEntry.toString());
ListView lv = (ListView)tl.findViewById(R.id.listView);
lv.setAdapter(new ArrayAdapter<String>(this,R.layout.list_item, p.getTurns() ));
有效的 OnClickCode:
private OnClickListener addButtonListener = new OnClickListener() {
public void onClick(View v) {
// get all the objects I care about
TableRow tr = (TableRow)v.getParent();
TableLayout tl = (TableLayout)tr.getParent();
EditText ev = (EditText)tl.findViewById(R.id.scoreEntry);
Player pl = (Player)tl.getTag();
TextView scoreLabel = (TextView)tl.findViewById(R.id.currentScore);
pl.addScore(ev.getText().toString());
scoreLabel.setText(pl.getScore());
ListView lv = (ListView)tl.findViewById(R.id.listView);
ArrayAdapter aa = (ArrayAdapter)lv.getAdapter();
aa.notifyDataSetChanged();
InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
EditText playerEntry = (EditText)tl.findViewById(R.id.playerName);
playerEntry.setText(playerEntry.toString());
}
};
最佳答案
我有一个类似的问题,当设备改变方向时,值正在复制。我发现 EditText 正在保存它的状态并根据 id 恢复它。在我已经在小部件上设置了正确的值之后,这个过程填充了相同的值。
我找到的解决方案是在 XML 的小部件条目上设置 android:saveEnabled="false"
。
关于android - EditText setText() 在多个 EditText View 上设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688766/
你好,我有一个列表,我试着做 settext从它,例如我知道TextView.setText(Listobject)喜欢TextView.setText(array[index])但它不起作用。我也尝
我正在尝试将 setText() 设置为 Button btnFloor, btnTable; 这不工作 ATM,实际上我正在尝试从 发送数据 FloorsActivity -> TablesActi
import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QWidget, QLa
setText(CharSequence, TextView.BufferType) 和 setText(CharSequence) 有什么区别,什么时候应该使用它们? 最佳答案 setText (C
想知道在android中哪种方法更快。只为求知。 TextView t; t = (TextView) findViewById(R.id.TextView_ID); int number=5; t.
两者都有效,显然,如果您开始连接,则需要获取字符串以避免显示 int。 问题:哪个是最“优雅”或“推荐”使用的? 谢谢 最佳答案 第二种方法更优雅,因为在内部,TextView(或任何 View 类)
我的编辑文本格式有以下代码,因为它可以接受我没有设置任何输入类型的任何输入:。所以最初我得到的默认输入类型是ABC,现在当我将其更改为?123时(使用ABC/123?Togel按钮),并且在输入某个数
例如,我可以通过简单地执行 setText(R.string.value) 来设置文本。我没有收到编译或运行时错误。我错误地了解到这一点,因为我总是通过从资源中获取我的字符串值来设置文本,例如 set
我正在开发 UDP 程序,但在我的 asynctask 中应用 setText 时遇到问题。基本上在 UDP 服务器上,我只要求输入一个端口,然后服务器应该连接到本地主机和端口。布局中间的 TextV
您好,我正在尝试在循环中将 setText 设置为 JTextArea,但我想这样做,在每个循环中,每一行都将在框架中看到。 我尝试过 Thread.sleep(500),因为我认为循环太快而无法设置
setText() 方法是否总是设置为字符串?如果我们想为文本字段设置一个 Double 值,如何实现? 最佳答案 首先将 Double 转换为字符串: textField.setText(myDou
我是 Android 开发新手。我不明白为什么这会在模拟器中崩溃,当我在 Android 模拟器上运行这个程序时,它打开然后快速关闭,给我一条“不幸的是, Hello World 已停止”消息。
我正在 Android 上开发一个小应用程序,但第二行在 SetText 上显示错误imcInterpretation 包含文本值。 imcVlaue 正在工作,但 imcInterpreter 不工
我有一个 Actor ,我正在使用 moveTo(destinationx, destinationy, time) 来移动它。 问题是 Actor 是一个 TextButton,我需要在运动发生时更
我如何在其他方法中使用textview值?我想将“txtTitle.setText”的 Intent 值传递给其他 Activity (汽车),但我无法在 onclick 方法上使用它。 pu
我是一名初学者程序员,我在我的应用程序中发现了一个错误/问题,这并不能让我安心 W1.setText (numberAsString); W2.setText (numberAsString); W3
如何设置要从抽屉导航中的抽屉标题布局查看的文本? protected void onCreate(Bundle savedInstanceState) { [...] NavigationView
我不明白为什么当我尝试在程序中对 JTextArea 对象进行 .setText() 时会出现运行时错误。在我的主 GUI 类中,我设置了一个创建弹出 JFrame 对象的事件,该 JFrame 中有
在我的项目中,我尝试通过一种方法来暴力破解字典,然后将任何尝试和正确的单词输出到主类的 textField 。 输出应该是 Trying a... Trying b... Trying c... Fo
我正在尝试在 JButton 中获取两行文本 文本应该显示在 和 之间以及/> 和 just like this 之间。但由于某种原因,它在我的 for 循环中不起作用 JButton title
我是一名优秀的程序员,十分优秀!