buc*_*h11 1 java android textview
这是我的第一次尝试,可能看起来很幼稚.我有activity_main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.buch.pranav.andy.hisabkitab.MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:onClick="clickHandler"
android:text="@string/connect" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginTop="65dp"
android:text="@string/testVal2"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的MainActivity.java看起来像这样:
public class MainActivity extends ActionBarActivity {
//Auto generated code here
public void clickHandler(View view){
View header = (View)getLayoutInflater().inflate(R.layout.activity_main, null);
TextView tv = (TextView) header.findViewById(R.id.textView2);
System.out.println("tv = "+tv.getText());
tv.setText("lol");
}
//Auto generated code here
}
Run Code Online (Sandbox Code Playgroud)
现在,当我单击按钮时,我在logcat窗口中看到sysout,因此clickHandler的绑定没有问题,但我的应用程序屏幕上的textview不会更新!Logcat甚至没有显示任何异常被抛出.
我在这里错过了什么?
据我所知,你使用了错误的布局,因为你在你的点击手柄里面膨胀它,而不是使用你应该在"onCreate"或"onCreateView"中膨胀的布局.
在onCreate中初始化视图,保持对TextView的引用,并仅从引用中修改此TextView.
你现在做的是:创建一个视图 - 修改它 - 删除它(它永远不会附加到你的窗口)
做这样的事情:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView2 = (TextView) findViewById(R.id.textView2);
final Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
textView2.setText("lol");
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |