Android:如何在扩展Fragment中使用扩展ListActivity

时间:2017-04-21 03:47:40

标签: android android-fragments android-fragmentactivity listactivity

如何将ListActivity正确地转换为片段?我总是收到错误。

我有这个片段:

public class Tools extends Fragment {

    public Tools(){}
    RelativeLayout view;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        view = (RelativeLayout) inflater.inflate(R.layout.tools, container, false);
        getActivity().setTitle("Tools");
        return view;
    }
}

我想在该片段中使用此Extend ListActivity:

public class MainActivity extends ListActivity {
    private String URL_ITEMS = "http://192.168.1.88/asd/getFixture.php";
    private static final String TAG_FIXTURE = "fixture";
    private static final String TAG_MATCHID = "matchId";
    private static final String TAG_TEAMA = "teamA";
    private static final String TAG_TEAMB = "teamB";
    JSONArray matchFixture = null;
    ArrayList<HashMap<String, String>> matchFixtureList = new ArrayList<HashMap<String, String>>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Call Async task to get the match fixture
        new GetFixture().execute();
    }
    private class GetFixture extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected Void doInBackground(Void... arg) {
            ServiceHandler serviceClient = new ServiceHandler();
            Log.d("url: ", "> " + URL_ITEMS);
            String json = serviceClient.makeServiceCall(URL_ITEMS,ServiceHandler.GET);
            // print the json response in the log
            Log.d("Get match fixture response: ", "> " + json);
            if (json != null) {
                try {
                    Log.d("try", "in the try");
                    JSONObject jsonObj = new JSONObject(json);
                    Log.d("jsonObject", "new json Object");
                    // Getting JSON Array node
                    matchFixture = jsonObj.getJSONArray(TAG_FIXTURE);
                    Log.d("json aray", "user point array");
                    int len = matchFixture.length();
                    Log.d("len", "get array length");
                    for (int i = 0; i < matchFixture.length(); i++) {
                        JSONObject c = matchFixture.getJSONObject(i);
                        String matchId = c.getString(TAG_MATCHID);
                        Log.d("matchId", matchId);
                        String teamA = c.getString(TAG_TEAMA);
                        Log.d("teamA", teamA);
                        String teamB = c.getString(TAG_TEAMB);
                        Log.d("teamB", teamB);
                        //  hashmap for single match
                        HashMap<String, String> matchFixture = new HashMap<String, String>();
                        // adding each child node to HashMap key => value
                        matchFixture.put(TAG_MATCHID, matchId);
                        matchFixture.put(TAG_TEAMA, teamA);
                        matchFixture.put(TAG_TEAMB, teamB);
                        matchFixtureList.add(matchFixture);
                    }
                }
                catch (JSONException e) {
                    Log.d("catch", "in the catch");
                    e.printStackTrace();
                }
            } else {
                Log.e("JSON Data", "Didn't receive any data from server!");
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            ListAdapter adapter = new SimpleAdapter(
                    MainActivity.this, matchFixtureList,
                    R.layout.list_item, new String[] {
                    TAG_MATCHID, TAG_TEAMA,TAG_TEAMB
            }
                    , new int[] {
                    R.id.matchId,R.id.teamA,
                    R.id.teamB
            }
            );
            setListAdapter(adapter);
        }
    }

这是我尝试将ListActivity放入Fragment的代码:

public class terbaru extends Fragment {

    public terbaru(){}
    RelativeLayout view;
    private String URL_ITEMS = "http://192.168.1.88/asd/getFixture.php";
    private static final String TAG_FIXTURE = "fixture";
    private static final String TAG_MATCHID = "matchId";
    private static final String TAG_TEAMA = "teamA";
    private static final String TAG_TEAMB = "teamB";
    JSONArray matchFixture = null;
    ArrayList<HashMap<String, String>> matchFixtureList = new ArrayList<HashMap<String, String>>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        view = (RelativeLayout) inflater.inflate(R.layout.terbarus, container, false);
        // Call Async task to get the match fixture
        new GetFixture().execute();
    }

    private class GetFixture extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected Void doInBackground(Void... arg) {
            ServiceHandler serviceClient = new ServiceHandler();
            Log.d("url: ", "> " + URL_ITEMS);
            String json = serviceClient.makeServiceCall(URL_ITEMS,ServiceHandler.GET);
            // print the json response in the log
            Log.d("Get match fixture response: ", "> " + json);
            if (json != null) {
                try {
                    Log.d("try", "in the try");
                    JSONObject jsonObj = new JSONObject(json);
                    Log.d("jsonObject", "new json Object");
                    // Getting JSON Array node
                    matchFixture = jsonObj.getJSONArray(TAG_FIXTURE);
                    Log.d("json aray", "user point array");
                    int len = matchFixture.length();
                    Log.d("len", "get array length");
                    for (int i = 0; i < matchFixture.length(); i++) {
                        JSONObject c = matchFixture.getJSONObject(i);
                        String matchId = c.getString(TAG_MATCHID);
                        Log.d("matchId", matchId);
                        String teamA = c.getString(TAG_TEAMA);
                        Log.d("teamA", teamA);
                        String teamB = c.getString(TAG_TEAMB);
                        Log.d("teamB", teamB);
                        //  hashmap for single match
                        HashMap<String, String> matchFixture = new HashMap<String, String>();
                        // adding each child node to HashMap key => value
                        matchFixture.put(TAG_MATCHID, matchId);
                        matchFixture.put(TAG_TEAMA, teamA);
                        matchFixture.put(TAG_TEAMB, teamB);
                        matchFixtureList.add(matchFixture);
                    }
                }
                catch (JSONException e) {
                    Log.d("catch", "in the catch");
                    e.printStackTrace();
                }
            } else {
                Log.e("JSON Data", "Didn't receive any data from server!");
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            ListAdapter adapter = new SimpleAdapter(
                    terbaru.this, matchFixtureList,
                    R.layout.list_item, new String[] {
                    TAG_MATCHID, TAG_TEAMA,TAG_TEAMB
            }
                    , new int[] {
                    R.id.matchId,R.id.teamA,
                    R.id.teamB
            }
            );
            setListAdapter(adapter);
            return view;
        }
    }

1 个答案:

答案 0 :(得分:0)

您无法在java中扩展多个类。要在Fragment中实现listview,您必须手动使用Recyleview或listview,或者您可以扩展ListFragment以实现ListActivity