我对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语句,当返回的字符串为null时,但这是我遇到问题的部分。如果你们需要我的代码的任何其他部分,请告诉我。我非常乐意提供帮助。再次感谢您的输入。
编辑:根据要求,这是我的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>
答案 0 :(得分:1)
<强>固定强>: 我已经找到了问题所在。从myEquation中删除toString方法以查看使用的地址后,我意识到我正在onResume()中初始化myEquation。 (到目前为止,我实际上已将它移动到onStart(),但这具有相同的效果)
所以是的。在onCreate()中初始化所有变量,避免大量的麻烦。