Java 如何在android中执行没有按钮的功能?
现在这个代码不起作用了Java 如何在android中执行没有按钮的功能?,java,android,networking,android-activity,client,Java,Android,Networking,Android Activity,Client,现在这个代码不起作用了 public class MainActivity extends Activity { String X = "Music"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layou
public class MainActivity extends Activity {
String X = "Music";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket("172.16.82.131", 8888);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(X);
//textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
}.execute();
}
}
公共类MainActivity扩展活动{
String X=“音乐”;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
套接字=空;
DataOutputStream DataOutputStream=null;
DataInputStream DataInputStream=null;
试一试{
插座=新插座(“172.16.82.131”,8888);
dataOutputStream=新的dataOutputStream(socket.getOutputStream());
dataInputStream=新的dataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(X);
//setText(dataInputStream.readUTF());
}捕获(未知后异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
最后{
if(套接字!=null){
试一试{
socket.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
如果(dataOutputStream!=null){
试一试{
dataOutputStream.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
如果(dataInputStream!=null){
试一试{
dataInputStream.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
返回null;
}
}.execute();
}
}
在我之前的帖子中,我发布了一个代码,其中一个功能在单击按钮时正在执行,但现在我已经将代码更改为这一个。
在启动应用程序时,我尝试在后台运行我的代码。。但是什么也没发生。我找不到哪里出了问题。。请提供帮助:(将onClick()重命名为其他名称,删除按钮并单击侦听器。然后它将失败,因为您正在UI线程上进行网络调用。您将需要使用AsyncTask()(或类似工具)
如果你只是想让它运行而不在乎答案
public void onCreate(Bundle savedInstanceState) {
// ...
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
try {
// your code here
} catch (Exception e) {
// catch any errors
}
return null;
}
}.execute();
// ...
}
public void onCreate(Bundle savedInstanceState){
// ...
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
试一试{
//你的代码在这里
}捕获(例外e){
//抓住任何错误
}
返回null;
}
}.execute();
// ...
}
将onClick()重命名为其他名称,移除按钮并单击侦听器。然后,它将失败,因为您正在UI线程上进行网络调用。您将需要使用AsyncTask()(或类似工具)
如果你只是想让它运行而不在乎答案
public void onCreate(Bundle savedInstanceState) {
// ...
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
try {
// your code here
} catch (Exception e) {
// catch any errors
}
return null;
}
}.execute();
// ...
}
public void onCreate(Bundle savedInstanceState){
// ...
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
试一试{
//你的代码在这里
}捕获(例外e){
//抓住任何错误
}
返回null;
}
}.execute();
// ...
}
试试这个
public class AndroidClient extends Activity {
String x = "Music";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textIn = (TextView)findViewById(R.id.textin);
doThis();
}
public void doThis() {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket("112.13.835.187", 8183);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(x);
textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}};
}
试试这个
public class AndroidClient extends Activity {
String x = "Music";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textIn = (TextView)findViewById(R.id.textin);
doThis();
}
public void doThis() {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket("112.13.835.187", 8183);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(x);
textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}};
}
在onCreate中编写代码,也可以用于后台进程在onCreate中编写代码,也可以用于后台进程使用AsyncTask处理数据输出流和套接字 请参见下面的示例代码 从onCreate()方法调用下面的行 然后像下面这样创建类,并在onPostExecute方法中写入这一行
textIn.setText(dataInputStream.readUTF());
私有类签名服务扩展异步任务{
套接字=空;
DataOutputStream DataOutputStream=null;
DataInputStream DataInputStream=null;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
试一试{
progressDilaog=ProgressDialog.show(MainActivity.this,“,
“加载”,正确,错误);
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
插座=新插座(“112.13.835.187”,8183);
dataOutputStream=新的dataOutputStream(socket.getOutputStream());
dataInputStream=新的dataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(x);
}捕获(未知后异常e){
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
最后{
if(套接字!=null){
试一试{
socket.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
如果(dataOutputStream!=null){
试一试{
dataOutputStream.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
如果(dataInputStream!=null){
试一试{
dataInputStream.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPos
public class AndroidClient extends Activity {
String x = "Music";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonSend = (Button)findViewById(R.id.send);
textIn = (TextView)findViewById(R.id.textin);
startonCreate();
}
public void startonCreate(){
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket("112.13.835.187", 8183);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF(x);
textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}