同じビューに2つのFragment
があり、フラグメントは水平リサイクルビューでjsonデータを取得します。データがjsonから来たときにフラグメントの線量が表示されない
最初の断片をMainActivity
から開きます。
最初のフラグメントからフラグメントを開くことはできますが、最初のフラグメントを開くことはできませんfragments
fragment
の場合は、json
から取得します。
私の最初のコードfragment
は、MainActivity
からオープンしました。
MainFrog.class
public class MainFrog extends Fragment {
// CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
private static final String TAG = "MainFrog";
public static final int CONNECTION_TIMEOUT = 10000;
public static final int READ_TIMEOUT = 15000;
private RecyclerView mRVMainFrog;
private AdapterMain mAdapter;
String url = "URL";
List<String> data = new ArrayList<>();
JSONParser jParser = new JSONParser();
JSONArray sectionArr = null;
String sections = "sections";
String sectionName = "section_name";
Context context;
TextView searchOnSelect;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//Make call to AsyncTask
new AsyncLogin().execute();
}
private class AsyncLogin extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
// Check your log cat for JSON reponse
Log.d("All Products: ", json.toString());
try {
sectionArr = json.getJSONArray(sections);
// looping through All Items
Log.e(TAG, "doInBackground: " + sectionArr);
for (int i = 0; i < sectionArr.length(); i++) {
JSONObject c = sectionArr.getJSONObject(i);
Log.e(TAG, "doInBackground: " + c);
// Storing each json item in variable
String name = c.getString(sectionName);
Log.e(TAG, "doInBackground: " + name);
//HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
//map.put("", name);
// adding HashList to ArrayList
data.add(String.valueOf(name));
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
//
//`RecyclerView chipRecyclerView =`
// (RecyclerView)findViewById(R.id.recyclerView);
mAdapter = new AdapterMain(getActivity(), data);
// updating listview
//mRVFishPrice.setAdapter(mAdapter);
// Setup and Handover data to recyclerview
LinearLayoutManager layoutManager
= new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
mRVMainFrog.setLayoutManager(layoutManager);
mRVMainFrog.setAdapter(mAdapter);
}
}
Fragment fragment;
public MainFrog() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View inflatedMainView = inflater.inflate(R.layout.mainfrog, null);
View infaltedMain = inflater.inflate(R.layout.activity_main, null);
View mainLayout = infaltedMain.findViewById(R.id.detailsContent);
mRVMainFrog = (RecyclerView) inflatedMainView.findViewById(R.id.mainRecycleView);
searchOnSelect = (TextView) mainLayout.findViewById(R.id.searchOnSelect);
ItemClickSupport.addTo(mRVMainFrog).setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View v) {
// do it
if (position == 0) {
fragment = new CarFrog();
replaceFragment(fragment);
searchOnSelect.setVisibility(View.VISIBLE);
} else if (position == 1) {
fragment = new BuildFrog();
replaceFragment(fragment);
searchOnSelect.setVisibility(View.VISIBLE);
} else if (position == 2) {
fragment = new DeviceFrog();
replaceFragment(fragment);
searchOnSelect.setVisibility(View.VISIBLE);
} else if (position == 3) {
fragment = new DeviceFrog();
replaceFragment(fragment);
searchOnSelect.setVisibility(View.VISIBLE);
}
}
});
return inflatedMainView;
}
と私のreplaceFragmentのように見える:
public void replaceFragment(Fragment someFragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.carLayout, someFragment);
transaction.addToBackStack("abc");
transaction.commit();
}
repkaceFragment
方法は、まずlayout
以下第二layout
、 と交換しますが、私は最初のレイアウト(firstfragment)と交換したときにそれがです仕事
2番目の断片は、静的なデータですが、position == 0
の場合は動作しません。
CarFrog.class
私がLog
CarFrog.class
でMainFrog.class
で使用したのと同じコードを持っては非常によくデータを取得するが、fragment
dosen'tが表示されます。
UPDATE:デバッグ後
CarFrog
mAdapterリターンヌルを開くに。?
が、私はMainFrog
を開くが、それが仕事だときのケースでは、nullを返します。
mRVMainFrogはどこに宣言されていますか? –
@ZakiPathan –
新しいAsyncLogin()を呼び出します。レイアウト項目が宣言された後にonCreateViewで'RecyclerView chipRecyclerView =' (RecyclerView)を削除します。findViewById(R.id.recyclerView); AsyncTaskから。これを試してみてください –