- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有导致警报对话框的 MainActivity,当打开的警报对话框不起作用时更改音量,放置 OnKeyListener,现在当您按下音量按钮时处理两次,MainActivity 中的监听器处理单击正确,帮助我理解
MainActivity 中的代码
public void ShowTrack(final String smetaout,String stitleout){
if (MediaService.isPlayingDubstep || MediaService.isPlayingLiquid || MediaService.isPlayingMain == true) {
allbtnStop();
}
alert = new AlertDialog.Builder(this).create();
alert.setTitle(stitleout);
alert.setCanceledOnTouchOutside(false);
LayoutInflater li = getLayoutInflater();
View v = li.inflate(R.layout.track_view, null);
Log.d("My Webview", "ShowTrack");
final WebView wv = (WebView) v.findViewById(R.id.trackView);
wv.setVisibility(View.GONE);
playTrack = (Button) v.findViewById(R.id.playTrack);
progress = (ProgressBar) v.findViewById(R.id.progress);
playTrack.setVisibility(View.INVISIBLE);
closeTrack = (Button) v.findViewById(R.id.close);
colors_sel = mSettings.getString("colors", "1");
if (colors_sel.equals("0")) {
playTrack.setBackgroundResource(R.drawable.stop_button_red);
}
else if (colors_sel.equals("1")) {
playTrack.setBackgroundResource(R.drawable.stop_button_green);
}
else if (colors_sel.equals("2")) {
playTrack.setBackgroundResource(R.drawable.stop_button_blue);
}
progress.setVisibility(View.VISIBLE);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl(smetaout);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.loadUrl(url);
Log.d("shouldOverrideUrlLoading", url);
MediaService.releaseMP();
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
if(!redirect){
loadingFinished = true;
Log.d("onPageFinished", "loadingFinished = true;");
}
if(loadingFinished && !redirect){
//HIDE LOADING IT HAS FINISHED
if (loadtrack == true){
myUri = Uri.parse(url);
context = getApplicationContext();
at = (ActionTask) new ActionTask().execute();
playTrack.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
colors_sel = mSettings.getString("colors", "1");
if (MediaService.isPlayingTrack) {
MediaService.pauseT();
if (colors_sel.equals("0")) {
playTrack.setBackgroundResource(R.drawable.play_button_red);
} else if (colors_sel.equals("1")) {
playTrack.setBackgroundResource(R.drawable.play_button_green);
} else if (colors_sel.equals("2")) {
playTrack.setBackgroundResource(R.drawable.play_button_blue);
}
}else{
visibleProgressTrack();
MediaService.startT();
if (colors_sel.equals("0")) {
playTrack.setBackgroundResource(R.drawable.stop_button_red);
} else if (colors_sel.equals("1")) {
playTrack.setBackgroundResource(R.drawable.stop_button_green);
} else if (colors_sel.equals("2")) {
playTrack.setBackgroundResource(R.drawable.stop_button_blue);
}
}
Log.i("ShowTrack","isPlayingTrack="+MediaService.isPlayingTrack);
}
});
}
loadtrack = !loadtrack;
} else{
redirect = false;
}
}
});
alert.setView(v);
closeTrack.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MediaService.isPlayingTrack = false;
if (MediaService.mediaPlayer != null) {
if (at != null){
at.cancel(false);
}
MediaService.stopT();
MediaService.releaseMP();
}
alert.dismiss();
}
});
alert.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
MediaService.isPlayingTrack = false;
if (MediaService.mediaPlayer != null) {
if (at != null){
at.cancel(false);
}
MediaService.stopT();
Log.i("Key","Back");
MediaService.releaseMP();
}
dialog.dismiss();
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
int index = seekbar.getProgress();
seekbar.setProgress(index + 1);
Log.i("onKey","seekbar="+index);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
int index = seekbar.getProgress();
seekbar.setProgress(index - 1);
Log.i("onKey","seekbar="+index);
return true;
}
return onKeyDown(keyCode, event);
}
});
alert.show();
}
public static void initBar(SeekBar bar, final int stream) {
bar.setMax(am.getStreamMaxVolume(stream));
bar.setProgress(am.getStreamVolume(stream));
bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar bar, int progress,
boolean fromUser) {
am.setStreamVolume(stream, progress, AudioManager.FLAG_PLAY_SOUND);
am.setStreamVolume(stream, progress, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
public void onStartTrackingTouch(SeekBar bar) {
// no-op
}
public void onStopTrackingTouch(SeekBar bar) {
// no-op
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
//ProgressBar seekbar = (SeekBar)findViewById(R.id.seekBar1);
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
int index = seekbar.getProgress();
seekbar.setProgress(index + 1);
Log.i("onKeyDown","seekbar="+index);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
int index = seekbar.getProgress();
seekbar.setProgress(index - 1);
Log.i("onKeyDown","seekbar="+index);
return true;
} else if (keyCode == KeyEvent.KEYCODE_BACK){
if (exit==false)
Toast.makeText(this, R.string.exit, Toast.LENGTH_SHORT).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
exit = false;
}
}, 3000);
if (exit) {
stopService();
unregisterReceiver(myReceiver);
CallReceiver.state = false;
MainActivity.this.finish();
}
exit = true;
return true;
}
return super.onKeyDown(keyCode, event);
}
最佳答案
onKeyListener 检测按键按下和按键向上。这 2 个事件在 onKeyListener 中触发,并导致事件触发两次。
仅检查按键按下事件...您似乎没有在 onKey 方法中检测到此类事件。在你的 onKey 方法中这样的东西应该防止双重触发
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction()==KeyEvent.ACTION_UP) {
// your logic now goes in here
}
.....
}
关于android - OnKeyListener 句柄按下两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26968353/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!