1 回答

TA貢獻2019條經驗 獲得超9個贊
目前,您有一個Intent局部變量,其中sendDataToAdapter()獲取間隔數作為額外的。由于您不對 this 執行任何其他操作Intent,一旦該方法完成,它將被垃圾收集,額外的內容將無法從該方法之外的任何地方訪問。
在 中startTimeActivity(),您實例化一個新Intent的開始TimeActivity。這Intent沒有任何額外功能。但這是Intentwhose extras 將傳遞給的TimeActivity。
因此,為了將間隔數作為額外的正確值Intent,您可以將參數numberOfIntervals添加到startTimeActivity() (請注意我使用的是字符串常量以避免錯別字引起的錯誤)
public static final String INTERVAL_COUNT = "INTERVAL_COUNT";
private void startTimeActivity(int numberOfIntervals) {
Intent intent = new Intent(this, TimeActivity.class);
intent.putExtra(INTERVAL_COUNT, numberOfIntervals)
startActivity(intent);
Log.d(TAG, "startTimeActivity: TimeActivity has been started" + numberOfIntervals);
}
由于您需要知道 中的間隔數CustomAdapter,因此可以向構造函數添加另一個參數:
public CustomAdapter(Context context, ArrayList<Integer> mWorkTW, ArrayList<Integer> mWorkET, ArrayList<Integer> mRestTW, ArrayList<Integer> mRestET, int numberOfIntervals) {
this.mWorkTW = mWorkTW;
// ...
this.numberOfIntervals = numberOfIntervals;
Log.d(TAG, "CustomAdapter: " + numberOfIntervals);
}
在 中TimeActivity,您可以int通過調用訪問該值getIntent():
private int numberOfIntervals;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_time);
Log.d(TAG, "onCreate: Started");
numberOfIntervals = getIntent().getIntExtra(INTERVAL_COUNT, 0);
Toast.makeText(this, "" + numberOfIntervals, Toast.LENGTH_LONG).show();
Log.d(TAG, "" + numberOfIntervals);
initializeViews();
}
最后,您可以按如下方式初始化RecyclerViewin :TimeActivity
private void initializeRecyclerView() {
Log.d(TAG, "initializeRecyclerView: Initialize RecyclerView");
RecyclerView intervalRecyclerView = findViewById(R.id.intervalRecyclerView);
CustomAdapter adapter = new CustomAdapter(this, WTV, WET, RTV, RET, numberOfIntervals);
intervalRecyclerView.setAdapter(adapter);
intervalRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}
添加回答
舉報