我已经创建了一个webview应用程序。按音量键时,我的应用程序崩溃。这是logcat中的错误
W/ViewRootImpl[MainActivity]:由于没有窗口焦点而取消事件:KeyEvent{action=action\u UP,keyCode=keyCode\u VOLUME\u DOWN,scanCode=114,metaState=0,flags=0x28,repeatCount=0,eventTime=196583031,downTime=196582864,deviceId=9,source=0x101}
下面是我的Main Activity.java文件:
package app.freeairdrop.io;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
public class MainActivity extends Activity{
private ProgressBar progressBar;
private WebView webView;
private SwipeRefreshLayout mySwipeRefreshLayout;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClientDemo());
webView.setWebChromeClient(new WebChromeClientDemo());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.loadUrl("http://freeairdrop.io/");
mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webView.reload();
mySwipeRefreshLayout.setRefreshing(false);
}
}
);
}
private class WebViewClientDemo extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse(url);
if (uri.getHost() != null && (url.startsWith("https://freeairdrop.io/") || url.startsWith("https://www.freeairdrop.io/"))) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
progressBar.setProgress(100);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}
}
private class WebChromeClientDemo extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
else {
finish();
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
// This method is used to detect back button
public void onBackPressed() {
if(webView.canGoBack()) {
webView.goBack();
} else {
// Let the system handle the back button
super.onBackPressed();
}
}
}
从这里删除调用完成(),
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
else {
finish(); // Remove this, onBackPressed() should handle it.
}
return super.onKeyDown(keyCode, event);
}
使用以下方法将焦点添加到webview:
<WebView android:id="@+id/webview"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="true"/>
或
webview.request焦点(View.FOCUS_DOWN|View.FOCUS_UP);
Remove
finish();
from here :
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
else {
finish();
}
问题内容: 未调用音量按钮通知功能。 码: 在viewWillAppear中被调用 无论哪种情况,代码都不会到达print语句。 我正在尝试两种不同的方法来做到这一点,但都没有用。 我已遵循以下步骤:检测iPhone的音量按钮按下了吗? 问题答案: 使用第二种方法,密钥路径的值应为。那就是我们正在观察的财产。因此将代码更改为
问题内容: 我有这个代码 它的工作原理,但不是我所期望的。声音会播放,但仅在我每次按下按钮时播放。我的主意是 当我按下按钮时,声音会播放,当我停止动作(手指在按钮之外)时,音乐会暂停。 有什么想法吗? 谢谢 问题答案: 这应该可以工作(我认为您的开关柜出了点问题):
在关于克里特岛方法的主要活动中,我补充说: 恳求我能给我一些帮助,想。
我正在使用javafx编写一个小型棋盘游戏,我已经为棋盘上的每个“单元格”创建了一个网格。 但是,在按下单元格按钮时,我在更改单元格颜色时遇到了一些问题。 下面是我得到的一个错误:“Error:(44,43) java:从内部类引用的局部变量必须是final或有效的final” 但是,我不能将变量设为final——因为变量是for循环的一部分,如下所示: 这里真正的问题是,我需要向作为按钮数组一部
问题内容: 在HTML中,我通过此代码创建一个音频按钮 它可以正常工作,但是在reactjs中,我在下面使用三个文件,并且该文件与html具有相同的路径,但是代码无法正常工作,因此我得到了一个空白网站。对不起,我的英语不好。index.html Test.js index.js 问题答案: 在反应期望功能。但是,当您这样做时,它会返回一个值。将onClick定义更改为 码: 例如,您还需要一个捆绑
我开始用GUI制作Java计算器,但我遇到了一个问题。我是Java新手,如果我的问题很愚蠢,我很抱歉。我想知道如何正确地为Action Listener编写代码,这样我就可以按下一个按钮,并将该按钮上的文本显示在文本区域中。所有评论都是我试图做的,但没有成功。