我為我的應用程序使用片段。我還使用了一個導航抽屜,它通過抽屜中的按鈕打開片段。我試圖用它的適配器和數組列表為我的 recyclerview 顯示一些基本的圖像和文本。我遇到的問題是我不知道如何修改代碼以對我的片段使用 recyclerview,因為我看到的所有教程都不使用片段。以下是我的活動代碼:public class secondActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {private DrawerLayout drawer;private RecyclerView mRecyclerView;private RecyclerView.Adapter mAdapter;private RecyclerView.LayoutManager mLayoutManager;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); ArrayList<exampleItemBooks> exampleList = new ArrayList<>(); exampleList.add(new exampleItemBooks(R.drawable.artofwar, "Line 1", "Line 2")); exampleList.add(new exampleItemBooks(R.drawable.aristotle, "Line 3", "Line 4")); exampleList.add(new exampleItemBooks(R.drawable.caesarbook, "Line 5", "Line 6")); exampleList.add(new exampleItemBooks(R.drawable.platorepublic, "Line 7", "Line 8")); exampleList.add(new exampleItemBooks(R.drawable.senecaletters, "Line 9", "Line 10")); exampleList.add(new exampleItemBooks(R.drawable.thehistoryofmypeople, "Line 11", "Line 12")); exampleList.add(new exampleItemBooks(R.drawable.theprince, "Line 13", "Line 14")); exampleList.add(new exampleItemBooks(R.drawable.thritysixstrategems, "Line 15", "Line 16")); exampleList.add(new exampleItemBooks(R.drawable.medidations, "Line 17", "Line 18")); mRecyclerView = findViewById(R.id.recyclerViewBooks); mRecyclerView.setHasFixedSize(false); mLayoutManager = new LinearLayoutManager(this); mAdapter = new exampleBooksAdapter(exampleList); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(mAdapter); Toolbar toolbar = findViewById(R.id.toolbarMain); setSupportActionBar(toolbar);
1 回答

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
您的代碼失敗,因為您的 Activity 正在嘗試訪問RecyclerView
Fragment 布局的一部分,并且您的 Fragment 布局在您調用后無法立即使用setContentView()
(即使在您replace()
操作之后,它也只能異步使用,因為您使用commit()
而不是commitNow()
)。
片段應該(盡可能)是自包含的。這意味著如果您的 Fragment 擁有RecyclerView
,它應該負責將數據加載到其中:而不是您的 Activity。
您應該將 Activity 中與 Fragment 接觸的所有代碼移至RecyclerView
Fragment - 理想情況下,移動到諸如 之類的方法中onViewCreated()
,該方法使您可以訪問已膨脹的視圖,onCreateView()
并且是調用findViewById()
和獲取RecyclerView
.
添加回答
舉報
0/150
提交
取消