我想調用一個Activity類的方法來正常的公共類。但它面臨着NullPointerException。從另一個類調用Activity類的android widget方法?
我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異常。
請幫我解決這個問題。
你能提供更多的代碼嗎?例如你的Data類被初始化了嗎? 由於您的et1變量是靜態的,您的數據類實例可能只是在初始化之前訪問該變量。你不應該對你的視圖使用靜態引用 - 以防止內存泄漏。 你應該在你的活動中調用一些方法來設置文本。我猜你的套接字連接數據是在工作線程上傳遞的,但是應該在UI線程上調用setText()方法(請參閱https://developer.android.com/reference/android/app/Activity.html#runOnUiThread (java.lang中。Runnable接口)) – convexHull
**我猜你的套接字連接的數據是在工作線程交付,但setText()方法應該在UI線程調用** 是的,插座連接工作從MainActivity.class其中'數據線.class'是套接字類來調用一個套接字,它也不是一個UI線程。 :(@convexHull –
所以我怎麼從一個非活動類通過MainActivity.class的asynctask運行調用UI線程方法?? @convexHull –