我对 android 编程相当陌生,在我的代码中更新 TextView 时遇到问题。我可以设置它并从 onResume() 正确更新。
后来我打电话
startActivityForIntent(my.android.activity,0)
然后我在这个方法中使用 setText:
onActivityResult(int requestCode, int resultCode, Intent returnIntent){
if (resultCode == Activity.RESULT_OK){
String myString= returnIntent.getString("mystr","empty");
myClass=myClass.interperetResults(myString); //this method returns correctly
leftText.setText(""+myClass.toString());
leftText.invalidate() //neither invalidate() or postInvalidate() changes result
}
};
它似乎在 TextView 类中更新(我使用 System.out 来调试它),但它不会在屏幕上更新。
据我所知,我只需要调用 TextView.invalidate() 或 TextView.postInvalidate(),它们都不起作用。有什么我想念的,还是什么?我已经尝试了其他帖子中的许多不同建议,但在这里无济于事。
我还有一个 rightText 对象和 if 语句,用于返回的字符串何时为空,但这是我遇到问题的部分。如果你们需要我的代码的任何其他部分,请告诉我。我很乐意提供帮助。再次感谢您的输入。
编辑:根据要求,这是我的 xml 布局。虽然问题不是我看不到风景。当我在 onResume() 中调用 setText 时,它会正确显示和更改。无论如何,这是我的 xml 代码。我不想将变量名称更改为通用名称,所以实际上就是这样。我正在与该项目的合作伙伴一起工作,他是创建 xml 和布局的人,所以我不完全确定这里的一切是什么。我希望你们能理解它。
这是 onCreate:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
}
和 onResume:
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
setContentView(R.layout.play);
myEquation = new Equation(getResources());
leftText = (TextView) this.findViewById(R.id.playLeftEquation);
rightText = (TextView) this.findViewById(R.id.playRightEquation);
//leftText.setText("No data");
//rightText.setText("No data"); //The textviews update fine here.
//Currently commented out because I thought that maybe this was
//overwriting the other setText, but still no change.
}
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/atomic_bckgrd"
android:columnCount="11" >
<ImageButton
android:id="@+id/playTrashCanButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="left"
android:layout_row="0"
android:contentDescription="@string/trash"
android:onClick="clickHandler"
android:src="@drawable/trash" />
<Button
android:id="@+id/playEditButton"
android:layout_column="2"
android:layout_row="0"
android:onClick="clickHandler"
android:text="@string/edit" />
<ImageButton
android:id="@+id/playRulesButton"
android:layout_column="4"
android:layout_columnSpan="5"
android:layout_row="0"
android:contentDescription="@string/rules"
android:onClick="clickHandler"
android:src="@drawable/rules1" />
<TextView //One of the non-updating fields
android:id="@+id/playLeftEquation"
android:layout_column="1"
android:layout_gravity="bottom"
android:layout_row="1"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageButton
android:id="@+id/playEnterButton"
android:layout_column="2"
android:layout_gravity="bottom"
android:layout_row="1"
android:contentDescription="@string/enter"
android:onClick="clickHandler"
android:src="@drawable/enter1" />
<TextView //The other non-updating field
android:id="@+id/playRightEquation"
android:layout_column="3"
android:layout_columnSpan="6"
android:layout_gravity="bottom"
android:layout_row="1"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Space
android:layout_width="52dp"
android:layout_height="1dp"
android:layout_column="0"
android:layout_row="0" />
<Space
android:layout_width="148dp"
android:layout_height="1dp"
android:layout_column="1"
android:layout_row="0" />
<Space
android:layout_width="161dp"
android:layout_height="1dp"
android:layout_column="2"
android:layout_row="0" />
<Space
android:layout_width="46dp"
android:layout_height="1dp"
android:layout_column="3"
android:layout_row="0" />
<Space
android:layout_width="36dp"
android:layout_height="1dp"
android:layout_column="4"
android:layout_gravity="fill_horizontal"
android:layout_row="0" />
<Space
android:layout_width="1dp"
android:layout_height="160dp"
android:layout_column="0"
android:layout_gravity="fill_horizontal"
android:layout_row="0" />
</GridLayout>