-1

如何正确获取ListActivity到片段?我总是得到一个错误。Android:如何在扩展片段中使用扩展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; 
    } 
} 

,我想用这个在片段扩展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为碎片的代码:

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; 
     } 
    } 

回答

0

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