0

我有一个TextViewid android:id="@+id/yazi",我有一个内置的按钮android:OnClick="gonderB"

我可以编译这段代码:

package com.seri.bir;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
     Bilmez b;
     TextView t;
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b = new Bilmez();
        t = (TextView) findViewById(R.id.yazi);
    }
    public void gonderB (View v,TextView t,Bilmez b){
        String s = " ..."+this;
        b.yaziYaz(v,s,t);
    }    
}

class Bilmez {
    public void yaziYaz(View v,String s,TextView t){
        t.setText(s);
    }
}

但是我有一个错误。我可以setText在另一个班级吗?

4

3 回答 3

2

您可以覆盖活动的 onClick。避免在 xml 文件中使用 android:OnClick="gonderB" 行。我认为最好实现 onClickListener 并将其附加到代码中的查看对象。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
Bilmez b;
TextView t;
Button bt;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b = new Bilmez();
    t = (TextView) findViewById(R.id.yazi);
    Button bt = (Button) findViewById(R.id.btn);
    bt.setOnClickListener(this);
}

@Override
public void onClick(View clickedView) {
    switch (clickedView.getId()) {
    case R.id.btn:
        String s = "...." + this;
        b.changeText(t,s);
        break;
    }}  //end of main class    }

在 changeText 方法中,您更改 TextView 的文本。如果您愿意,可以将此方法放在另一个类中。

class Bilmez {
            public void changeText(TextView t, String s){
                    t.setText(s);
            }
}
于 2012-09-29T20:57:54.120 回答
0

也许您遇到的是需要在 UI 线程上运行该函数?

public void yaziYaz(View v,final String s,final TextView t) {
   runOnUiThread(new Runnable() {
      public void run() {
         t.setText(s);
      }
   });
}
于 2012-09-29T20:21:01.440 回答
0

我认为你应该这样做:

public void gonderB (new View v,TextView t,Bilmez b){
    String s = " ..."+this;
    b.yaziYaz(v,s,t);
}
于 2012-09-29T20:42:39.587 回答