package com.example.SearchCenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageButton; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import com.example.Util.ConditionCode; import com.example.Util.ReturnData; import com.example.Util.cmkgWebServiceGet; import com.example.Util.publicStringUtil; import com.example.cmknowledgegraph.MainActivity; import com.example.cmknowledgegraph.R; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.lang.ref.WeakReference; import java.util.List; import java.util.Set; // public class SearchContent extends Fragment { public static List> a; public static int k=0; MainActivity mainActivity; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate( R.layout.activity_search, container, false ); //要加载的layout文件 } // 将Activity传过来,避免重复调用和Fragment嵌套的麻烦 @Override public void onAttach(Context context) { super.onAttach(context); this.mainActivity = (MainActivity) context; } //全局的消息处理handle private final SearchHandler searchHandler = new SearchHandler(mainActivity); //静态内部类,避免内存泄漏 public static class SearchHandler extends Handler { //持有对父Activity的弱引用,防止强引用导致这个消息处理非常耗时时, // 导致这个SearchContent不能被回收,最终内存泄漏 //在这个静态内部类里面需要使用get()方法来获取SearchActivity操作Activity private final WeakReference weakReference; SearchHandler(MainActivity activity){ this.weakReference = new WeakReference(activity); } //在这里处理消息 @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); //将消息中的数据取出来 MainActivity mainActivity = (MainActivity) weakReference.get(); Intent intent = new Intent(); intent.setClass(mainActivity, SearchEntryActivity.class); intent.putExtras(msg.getData()); mainActivity.startActivity(intent); } } public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); EditText search_edit = getActivity().findViewById(R.id.search_edit); ImageButton search_btn = (ImageButton) getActivity().findViewById(R.id.search_btn); search_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.i("haha", "=======Oncli"); // //点击查找按钮之后,取出输入的句子,传给后台 //构造请求搜索的参数 String inputContentArgs = publicStringUtil.questionArgsname+search_edit.getText().toString(); new Thread(new Runnable() { @Override public void run() { ReturnData response = cmkgWebServiceGet.executeHttpGet(inputContentArgs,publicStringUtil.questionSearchURL); //构建消息,将消息交给handle处理 Message m = new Message(); Bundle bundle = new Bundle(); bundle.putSerializable("msg", response); Intent intent = new Intent(); intent.setClass(mainActivity, SearchEntryActivity.class); intent.putExtras(bundle); mainActivity.startActivity(intent); // m.setData(bundle); // searchHandler.sendMessage(m); } }).start(); } }); } }