Java 为什么要将常量传递到Bundle对象putString()方法中?
我正在看一个教程,不明白他为什么决定通过常数。数据传递到的下一个活动中会生成相同的常量,为什么会这样?到目前为止,我所知道的常数的唯一用途是pi和其他数学常数 ListActivity.javaJava 为什么要将常量传递到Bundle对象putString()方法中?,java,android,Java,Android,我正在看一个教程,不明白他为什么决定通过常数。数据传递到的下一个活动中会生成相同的常量,为什么会这样?到目前为止,我所知道的常数的唯一用途是pi和其他数学常数 ListActivity.java public class ListActivity extends AppCompatActivity implements DerpAdapter.ItemClickCallback { private static final String BUNDLE_EXTRAS = "BUNDLE_EXTRA
public class ListActivity extends AppCompatActivity implements DerpAdapter.ItemClickCallback {
private static final String BUNDLE_EXTRAS = "BUNDLE_EXTRAS";
private static final String EXTRA_QUOTE = "EXTRA_QUOTE";
private static final String EXTRA_ATTR = "EXTRA_ATTR";
private RecyclerView recyclerView;
private DerpAdapter adapter;
private ArrayList listData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
listData = (ArrayList) DerpData.getListData();
recyclerView = (RecyclerView) findViewById(R.id.rec_list);
//LayoutManager controls if you are using Linear, staggard etc. It controls the views.
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new DerpAdapter(DerpData.getListData(), this);
recyclerView.setAdapter(adapter);
adapter.setItemClickCallback(this);
}
@Override
public void onItemClick(int p) {
ListItem item = (ListItem) listData.get(p);
Intent i = new Intent(this, DetailActivity.class);
Bundle extras = new Bundle();
extras.putString(EXTRA_QUOTE, item.getTitle());
extras.putString(EXTRA_ATTR, item.getSubTitle());
i.putExtra(BUNDLE_EXTRAS, extras);
startActivity(i);
}
@Override
public void onSecondaryIconClick(int p) {
ListItem item = (ListItem) listData.get(p);
//update our data
if (item.isFavourite()){
item.setFavourite(false);
} else {
item.setFavourite(true);
}
//pass new data to adapter and update
adapter.setListData(listData);
adapter.notifyDataSetChanged();
}
public class DetailActivity extends AppCompatActivity {
private static final String BUNDLE_EXTRAS = "BUNDLE_EXTRAS";
private static final String EXTRA_QUOTE = "EXTRA_QUOTE";
private static final String EXTRA_ATTR = "EXTRA_ATTR";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
Bundle extras = getIntent().getBundleExtra(BUNDLE_EXTRAS);
((TextView)findViewById(R.id.lbl_quote_text)).setText(extras.getString(EXTRA_QUOTE));
((TextView)findViewById(R.id.lbl_quote_attribution)).setText(extras.getString(EXTRA_ATTR));
}
DetailActivity.java
public class ListActivity extends AppCompatActivity implements DerpAdapter.ItemClickCallback {
private static final String BUNDLE_EXTRAS = "BUNDLE_EXTRAS";
private static final String EXTRA_QUOTE = "EXTRA_QUOTE";
private static final String EXTRA_ATTR = "EXTRA_ATTR";
private RecyclerView recyclerView;
private DerpAdapter adapter;
private ArrayList listData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
listData = (ArrayList) DerpData.getListData();
recyclerView = (RecyclerView) findViewById(R.id.rec_list);
//LayoutManager controls if you are using Linear, staggard etc. It controls the views.
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new DerpAdapter(DerpData.getListData(), this);
recyclerView.setAdapter(adapter);
adapter.setItemClickCallback(this);
}
@Override
public void onItemClick(int p) {
ListItem item = (ListItem) listData.get(p);
Intent i = new Intent(this, DetailActivity.class);
Bundle extras = new Bundle();
extras.putString(EXTRA_QUOTE, item.getTitle());
extras.putString(EXTRA_ATTR, item.getSubTitle());
i.putExtra(BUNDLE_EXTRAS, extras);
startActivity(i);
}
@Override
public void onSecondaryIconClick(int p) {
ListItem item = (ListItem) listData.get(p);
//update our data
if (item.isFavourite()){
item.setFavourite(false);
} else {
item.setFavourite(true);
}
//pass new data to adapter and update
adapter.setListData(listData);
adapter.notifyDataSetChanged();
}
public class DetailActivity extends AppCompatActivity {
private static final String BUNDLE_EXTRAS = "BUNDLE_EXTRAS";
private static final String EXTRA_QUOTE = "EXTRA_QUOTE";
private static final String EXTRA_ATTR = "EXTRA_ATTR";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
Bundle extras = getIntent().getBundleExtra(BUNDLE_EXTRAS);
((TextView)findViewById(R.id.lbl_quote_text)).setText(extras.getString(EXTRA_QUOTE));
((TextView)findViewById(R.id.lbl_quote_attribution)).setText(extras.getString(EXTRA_ATTR));
}
因为如果不使用常量,它可能会在某个时候变得混乱。我不是说这个例子,但这些变量应该是公共的,并且应该根据您的设计一次性写入DetailActivity或ListActivity。易于使用、易于记忆、易于修改和清理代码