我想将Activity类的方法调用到普通的公共类。但它面临 NullPointerException 。
My Activty(Lv.class)
public class Lv extends Activity {
public static EditText et1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listandimage);
et1 = (EditText) findViewById(R.id.editText1);
我的公共类(Data.class)
public class Data {
public String c = "";
public String d = "";
private static Socket soc;
public Data(String var1, String var2) {
this.c = var1.toLowerCase().trim();
this.d = var2;
}
public final void start() {
try {
soc = new Socket(address, port);
os = soc.getOutputStream();
is = new DataInputStream(soc.getInputStream());
} catch (Exception var5) {
}
}
public void processdata(String rcvdata){
String txttype = rcvdata;
if (txttype.equals("\003")) {
String rname="my man";
Lv.et1.setText(rname);
}
MainActivity.class
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new RTask().execute();
}
});
class RTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... Void) {
try {
mee = new Data(editText1.getText().toString(), editText2
.getText().toString());
mee.start();
} catch (Exception e) {
}
return null;
}
Data.class
是一个公共类,用于合成从套接字连接收到的数据。
是的。我的布局名称,内容名称是可以的,当我使用activity button onclick
时,它可以工作。
不知何故,每个活动类的命令
(例如gettext,点击按钮,调用适配器通知[使他们public static
也是])
通过这个公共类将保持 NullPointerException 。
请帮我解决这个问题。
答案 0 :(得分:0)
EditText
设置为静态。将此EditText
传递给您的Data类。所以你可以在Data class中调用它。
class Data {
//make it field
private EditText editText;
//your constructor of Data class
Data (EditText editText) {
this.editText = editText;
}
//now you can use editText like you are in Activity
private myMethod() {
editText.setText("every String you want to see here");
}
}
现在,当您从Activity创建数据时,只需传递EditText
Data data = new Data(editText);
同样需要传递Activity
。
如果您需要在Data类中更改多个EditText
,最好将活动传递给它。然后创建多个公共方法来更改视图的值。
首先,您应该知道静态变量链接到类,而不是对象。因此,在您的情况下确保它为null,因为初始化onCreate
的{{1}}方法不是静态的。