[英]Public class implementing runnable won't start-Android
当我单击列表视图中的项目时,我想启动一个新线程并执行我在Connect2类中为其定义的所需任务,但是据我所知,该线程未启动或未显示任何内容。指示为什么它没有开始。 如果有人可以帮助诊断代码中的问题,或者为我指出解决此问题的正确方向,我将不胜感激。 谢谢!
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_directory);
final ListView fileDirectory=(ListView) findViewById(R.id.DirectoryView);
final ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1, SocketConnection.remoteList);
fileDirectory.setAdapter(adapter);
fileDirectory.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(FileDirectory.this, "The click works", Toast.LENGTH_SHORT).show();
FileDirectory.listItem=i;
new Connect2().execute("");
adapter.notifyDataSetChanged();
}
});
}
public class Connect2 extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... params){
runConnectCode();
return null;
}
}
public void runConnectCode(){
String itemTemp=SocketConnection.remoteList.toArray()[FileDirectory.listItem].toString();
SocketConnection.PW.write(itemTemp);
//SocketConnection.DOS.flush();
SocketConnection.currentF.concat("\\"+itemTemp);
SocketConnection.PW.write(SocketConnection.currentF);
//SocketConnection.DOS.flush();
try{
Object object=SocketConnection.OIS.readObject();
SocketConnection.remoteList=(ArrayList<String>) object;
} catch(IOException e){
System.out.println(e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}//run()
尝试使用runOnUiThread()运行您的线程;
尝试创建类扩展Asynctask并在doinbackground()方法中调用您的代码,如下所示:
public class Connect2 extends AsyncTask<String , String , String>
{
@Override
protected String doInBackground(String... params) {
runConnectCode();
return null;
}
}
public void runConnectCode ()
{
String itemTemp = SocketConnection.remoteList.toArray() [FileDirectory.listItem].toString();
try {
SocketConnection.DOS.writeUTF(itemTemp);
SocketConnection.DOS.flush();
} catch (IOException e) {
System.out.println(e);
}
try {
SocketConnection.currentF.concat("\\" + itemTemp);
SocketConnection.DOS.writeUTF(SocketConnection.currentF);
SocketConnection.DOS.flush();
} catch (IOException e) {
System.out.println(e);
}
try {
Object object = SocketConnection.OIS.readObject();
SocketConnection.remoteList = (ArrayList<String>) object;
} catch (IOException e) {
System.out.println(e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
最后,在需要时调用此函数:
new Connect2().execute("");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.