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));
}
添加回答
举报