单击按钮时TextView不会更新

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甚至没有显示任何异常被抛出.

我在这里错过了什么?

Fra*_*e91 5

据我所知,你使用了错误的布局,因为你在你的点击手柄里面膨胀它,而不是使用你应该在"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)