一般來(lái)說(shuō)裆泳,獲取當(dāng)前活動(dòng)中的某一個(gè)視圖還是很方便的鳄橘,我們?cè)谑褂胦nClick函數(shù)的時(shí)候經(jīng)常會(huì)見(jiàn)到這樣的用法:
@Override
public void onClick(View v) {
Snackbar.make(v, "真的要?jiǎng)h除全部數(shù)據(jù)嗎叽掘?", Snackbar.LENGTH_SHORT)
.setAction("是噠蚣抗!", new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.deleteAllTips();
refreshTips();
Toast.makeText(MainActivity.this, "已經(jīng)刪除", Toast.LENGTH_SHORT).show();
}
}).show();
}
我們注意到,make函數(shù)的第一個(gè)參數(shù)是v,這可以是當(dāng)前布局的任意一個(gè)View癌瘾,Snackbar會(huì)使用這個(gè)View來(lái)找到最外層的布局從而展示Snackbar觅丰。但是我們有的時(shí)候并不是使用onClick函數(shù)來(lái)調(diào)用Snackbar。例如我們會(huì)在onOptionsItemSelected函數(shù)中使用Snackbar妨退。此時(shí)妇萄,我們可以借用下列方法獲取View視圖:
getWindow().getDecorView().findViewById(Android.R.id.content)
就上述例子來(lái)說(shuō)蜕企,可以修改為這樣:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
//TODO 刪除本地?cái)?shù)據(jù)
Snackbar.make(getWindow().getDecorView().findViewById(R.id.delete), "真的要?jiǎng)h除全部數(shù)據(jù)嗎?", Snackbar.LENGTH_SHORT)
.setAction("是噠冠句!", new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.deleteAllTips();
refreshTips();
Toast.makeText(MainActivity.this, "已經(jīng)刪除", Toast.LENGTH_SHORT).show();
}
}).show();
break;
default:
//TODO 黑人困惑......
Toast.makeText(this,"default",Toast.LENGTH_LONG).show();
}
return true;
}
就是這樣啦轻掩,蟹蟹大家的閱讀!