在通过xml定义编写安卓的上下文菜单程序时,出现了模拟器上程序长按只能出现一次菜单的情况,再次长按无法再出现菜单。
主Activity代码如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textOne = (TextView)findViewById(R.id.textOne);
TextView textTwo = (TextView)findViewById(R.id.textTwo);
this.registerForContextMenu(textOne);
this.registerForContextMenu(textTwo);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
if(view.getId() == R.id.textOne) {
if(menu.size() == 0) {
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.font_size, menu);
}
}
if(view.getId() == R.id.textTwo) {
if(menu.size() == 0) {
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.font_color, menu);
}
}
}
void setFontSize(int size) {
setContentView(R.layout.activity_main);
TextView textOne2 = (TextView)findViewById(R.id.textOne);
TextView textTwo2 = (TextView)findViewById(R.id.textTwo);
textOne2.setTextSize(size);
textTwo2.setTextSize(size);
}
void setFontColor(int c) {
setContentView(R.layout.activity_main);
TextView textOne2 = (TextView)findViewById(R.id.textOne);
TextView textTwo2 = (TextView)findViewById(R.id.textTwo);
textOne2.setTextColor(c);
textTwo2.setTextColor(c);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.size_5:
setFontSize(16); return true;
case R.id.size_4:
setFontSize(25); return true;
case R.id.size_3:
setFontSize(30); return true;
case R.id.size_2:
setFontSize(35); return true;
case R.id.red:
setFontColor(Color.RED); return true;
case R.id.blue:
setFontColor(Color.BLUE); return true;
case R.id.green:
setFontColor(Color.GREEN); return true;
case R.id.black:
setFontColor(Color.BLACK); return true;
default:
return super.onContextItemSelected(item);
}
}
}
请问有没有大神遇到过,知道怎么解决的?亦或我的代码实现有没有问题,欢迎指正。