不理解代码的目的和作用 忘解答
public class MainActivity extends AppCompatActivity {
private EditText edit1,edit2;
private TextView txt2;
private Button btn1;
private class MyHandler extends Handler{
private WeakReference activity;
public MyHandler(WeakReference activity){
this.activity=activity;
}
@Override
public void handleMessage(@NonNull Message msg){
super.handleMessage(msg);
switch (msg.what){
case 1:
try {
JSONObject jsonObject=new JSONObject(msg.obj.toString());
txt2.setText(jsonObject.getString("word"));
} catch (JSONException e) {
e.printStackTrace();
}
break;
case 2:
break;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
final MyHandler handler=new MyHandler(new WeakReference<MainActivity>(this));
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if("".equals(edit1.getText().toString()) || edit2.getText().toString()==""){
Toast.makeText(MainActivity.this,"用户名或密码不能为空!",Toast.LENGTH_SHORT).show();
return;
}
new Thread(new Runnable() {
@Override
public void run() {
String strUrl="http://192.168.1.108/androidServer.php?username="+edit1.getText().toString()+"&password="+edit2.getText().toString();
try{
URL url=new URL(strUrl);
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
urlConnection.connect();
InputStream is=urlConnection.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader reader=new BufferedReader(isr);
StringBuilder sb=new StringBuilder();
String str;
while ((str=reader.readLine())!=null){
sb.append(str);
}
reader.close();
isr.close();
is.close();
Message msg=new Message();
if(sb==null)
{
msg.what=2;
}else {
msg.what=1;
msg.obj=sb.toString();
}
handler.sendMessage(msg);
}catch(MalformedURLException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}).start();
}
});
}
private void initView(){
edit1=findViewById(R.id.edit1);
edit2=findViewById(R.id.edit2);
txt2=findViewById(R.id.txt2);
btn1=findViewById(R.id.btn1);
}
}
你这是一点都不懂 还是有部分没看懂啊(哪部分可以指出来)
1.这整个部分的流程应该是通过按钮点击时间触发http请求,然后上传用户名和密码
2.然后再把服务器返回的数据显示到文本上面
3.handleMessage这个方法主要是用来拿到从服务器返回的数据并展示到界面
4.setOnClickListener这里面主要是http请求以及拿到返回的数据
楼主可以看一下http请求,以及Handler的使用,