0

有應用從服務器獲取的圖像和文本,然後顯示在卡片視圖 enter image description here ,並有不同的選項卡選擇其他的應用程序和標籤從片段 延長enter image description here片段無法正常工作,並有錯誤

所以希望把我的第一次應用程序中的第二個應用程序標籤之一。 這樣的: enter image description here

所以粘貼第一個應用我的主要活動代碼片段,但有錯誤:

public class news extends Fragment { 

    private RecyclerView recyclerView; 
    private ArrayList<Deatails> data; 
    private DataAdapter adapter; 


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

    myFragmentView= inflater.inflate(R.layout.news, container, false); 
     initViews(); 
    return myFragmentView; 
} 

    private void initViews() { 

     recyclerView = (RecyclerView)myFragmentView.findViewById(R.id.card_recycler_view); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(layoutManager); 
     loadJSON(); 
    } 

    private void loadJSON() { 

      Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl("http://memaraneha.ir/") 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
      RequestInterface request = retrofit.create(RequestInterface.class); 
      Call<JSONResponse> call = request.getJSON(); 

      final ProgressDialog progressDialog = new ProgressDialog(this); 
      progressDialog.show(); 

      call.enqueue(new Callback<JSONResponse>() { 
       @Override 
       public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) { 
        progressDialog.dismiss(); 

        JSONResponse jsonResponse = response.body(); 
        data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid())); 
        adapter = new DataAdapter(MainActivity.this, data); 
        recyclerView.setAdapter(adapter); 
       } 

       @Override 
       public void onFailure(Call<JSONResponse> call, Throwable t) { 
        progressDialog.dismiss(); 
        Log.d("Error", t.getMessage()); 
       } 
      }); 
    } 
} 

這是我的錯誤:

enter image description here

,,,,

enter image description here

,,,,

enter image description here

+0

顯示您的活動代碼也請 – DEADMC

+0

我添加的主要活動。但主要活動沒有錯誤 – erfan

+0

你有沒有使用過碎片?你有沒有試圖檢查任何片段教程,它顯示瞭如何膨脹佈局和初始化視圖? – GrIsHu

回答

0

我解決我的問題,從而爲人們的正確代碼:

public class news extends Fragment { 

    private RecyclerView recyclerView; 
    private ArrayList<Deatails> data; 
    private DataAdapter adapter; 
    private View myFragmentView; 



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


     myFragmentView= inflater.inflate(R.layout.news, container, false); 
     initViews(); 
     return myFragmentView; 
    } 

    private void initViews() { 

     recyclerView = (RecyclerView)myFragmentView.findViewById(R.id.card_recycler_view); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext()); 
     recyclerView.setLayoutManager(layoutManager); 
     loadJSON(); 
    } 

    private void loadJSON() { 

      Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl("http://memaraneha.ir/") 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
      RequestInterface request = retrofit.create(RequestInterface.class); 
      Call<JSONResponse> call = request.getJSON(); 

      final ProgressDialog progressDialog = new ProgressDialog(getActivity()); 
      progressDialog.show(); 

      call.enqueue(new Callback<JSONResponse>() { 
       @Override 
       public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) { 
        progressDialog.dismiss(); 

        JSONResponse jsonResponse = response.body(); 
        data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid())); 
        adapter = new DataAdapter(getActivity(), data); 
        recyclerView.setAdapter(adapter); 
       } 

       @Override 
       public void onFailure(Call<JSONResponse> call, Throwable t) { 
        progressDialog.dismiss(); 
        Log.d("Error", t.getMessage()); 
       } 
      }); 
    } 
} 
1

你應該用你Fragment內部鏈接View

內部片段

private View myFragmentView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myFragmentView = inflater.inflate(R.layout.news, container, false); 
    return myFragmentView; 
} 

你不能只是從你的活動複製粘貼代碼到你的片段。 您需要從片段視圖啓動findViewById。

myFragmentView.findViewById(R.id.addYourViewHere); 

不能運行之前,你的片段OnCreateView方法Init方法。

+0

我編輯我的代碼lookat。真的 ?所以我的3個錯誤解決了,但是我的代碼中仍然存在3個錯誤 – erfan

+0

@erfan您是否在R.layout.news中有R.id.card_recycler_view?你在哪裏有錯誤? – DEADMC

1

當你使用片段時,你必須覆蓋它的onCreateView方法。

例子:

public class FavFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_favorite, container, false); 

    mRecyclerView = (RecyclerView) v.findViewById(R.id.my_recycler_view); 
    layoutEmpty = (RelativeLayout) v.findViewById(R.id.layoutEmpty); 
    btnShowOnMap = (FloatingActionButton) v.findViewById(R.id.btnShowOnMap); 
    fabRoulette = (FloatingActionButton) v.findViewById(R.id.fabRoulette); 
    mainView = v.findViewById(R.id.mainView); 


    return v; 
} 
+0

我編輯我的代碼lookat。真的 ?所以我的3個錯誤解決,但3錯誤仍然在我的代碼 – erfan

+0

,請給出一些關於這3個錯誤的更多信息。 –