Java 为什么可以';我不能使用getActivity()
我的问题是为什么我不能在下面的代码中使用getActivity方法。我正在尝试使用Java 为什么可以';我不能使用getActivity(),java,android,webview,Java,Android,Webview,我的问题是为什么我不能在下面的代码中使用getActivity方法。我正在尝试使用webView上传图像。这是我的第一个Android应用程序。我想为我的分类osclass站点创建一个应用程序 当我构建应用程序时,我收到以下消息: 错误:找不到符号方法getActivity() 请更改我的代码,然后粘贴到答案,或者写下我应该将代码(或更改)放在哪里 包org.satlyk.org.myapplication; 导入android.content.ActivityNotFoundException
webView
上传图像。这是我的第一个Android应用程序。我想为我的分类osclass站点创建一个应用程序
当我构建应用程序时,我收到以下消息:
错误:找不到符号方法getActivity()
请更改我的代码,然后粘贴到答案
,或者写下我应该将代码(或更改)放在哪里
包org.satlyk.org.myapplication;
导入android.content.ActivityNotFoundException;
导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Build;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.KeyEvent;
导入android.view.view;
导入android.webkit.ValueCallback;
导入android.webkit.WebChromeClient;
导入android.webkit.WebResourceRequest;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入android.widget.FrameLayout;
导入android.widget.ProgressBar;
导入android.widget.Toast;
公共类MainActivity扩展了AppCompatActivity{
专用字符串WebAddress=”https://satlyk.org";
私有网络视图;
私人ProgressBar ProgressBar;
私有框架布局;
private ValueCallback mUploadMessage;
公共价值回调上传消息;
公共静态最终整数请求\u选择\u文件=100;
private final static int FILECHOOSER_RESULTCODE=1;
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图)
{
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP)
{
if(requestCode==请求\选择\文件)
{
if(uploadMessage==null)
回来
uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode,intent));
uploadMessage=null;
}
}
else if(requestCode==FILECHOOSER\u RESULTCODE)
{
if(null==mUploadMessage)
回来
//如果要在片段内部实现WebView,请使用MainActivity.RESULT\u OK
//仅当在活动中实现WebView时,才使用“结果\确定”
Uri result=intent==null | | resultCode!=MainActivity.result_OK?null:intent.getData();
mUploadMessage.onReceiveValue(结果);
mUploadMessage=null;
}
其他的
Toast.makeText(getActivity().getApplicationContext(),“未能上载图像”,Toast.LENGTH_LONG.show();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
frameLayout=(frameLayout)findviewbyd(R.id.frameLayout);
progressBar=(progressBar)findViewById(R.id.progressBar);
设置最大进度条(100);
webView=findviewbyd(R.id.webView);
WebSettings mWebSettings=webView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
mWebSettings.setSupportZoom(假);
mWebSettings.setAllowFileAccess(true);
mWebSettings.setAllowFileAccess(true);
mWebSettings.setAllowContentAccess(true);
webView.getSettings().setUserAgentString(“satlyk_应用程序”);
setWebViewClient(新的HelpCliet());
setWebView.WebChromeClient(新WebChromeClient(){
//对于3.0+设备(启动)
//构造函数之前附加的onActivityResult
受保护的void openFileChooser(ValueCallback uploadMsg,String acceptType)
{
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
startActivityForResult(Intent.createChooser(i,“文件浏览器”),FILECHOOSER\u结果代码);
}
//用于棒棒糖5.0+设备
公共布尔onShowFileChooser(WebView mWebView、ValueCallback filePathCallback、WebChromeClient.FileChooseParams FileChooseParams){
if(uploadMessage!=null){
uploadMessage.onReceiveValue(null);
uploadMessage=null;
}
uploadMessage=filePathCallback;
Intent Intent=fileChooserParams.createIntent();
试一试{
startActivityForResult(意图、请求、选择文件);
}捕获(ActivityNotFounde异常){
uploadMessage=null;
Toast.makeText(getActivity().getApplicationContext(),“无法打开文件选择器”,Toast.LENGTH\u LONG.show();
返回false;
}
返回true;
}
//仅适用于Android 4.1
受保护的void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获)
{
mUploadMessage=上传消息;
意向意向=新意向(意向.行动\u获取\u内容);
intent.addCategory(intent.CATEGORY\u可打开);
intent.setType(“image/*”);
startActivityForResult(Intent.createChooser(Intent,“文件浏览器”),FILECHOOSER\u RESULTCODE);
}
受保护的void openFileChooser(ValueCallback uploadMsg)
{
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
startActivityForResult(Intent.createChooser(i,“文件选择器”)、文件选择器\u结果代码);
}
public void onProgressChanged(WebView视图,int-progress)
{
frameLayout.setVisibility(View.VISIBLE);
package org.satlyk.org.myapplication;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private String WebAddress = "https://satlyk.org";
private WebView webView;
private ProgressBar progressBar;
private FrameLayout frameLayout;
private ValueCallback<Uri> mUploadMessage;
public ValueCallback<Uri[]> uploadMessage;
public static final int REQUEST_SELECT_FILE = 100;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
if (requestCode == REQUEST_SELECT_FILE)
{
if (uploadMessage == null)
return;
uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
uploadMessage = null;
}
}
else if (requestCode == FILECHOOSER_RESULTCODE)
{
if (null == mUploadMessage)
return;
// Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
// Use RESULT_OK only if you're implementing WebView inside an Activity
Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
else
Toast.makeText(getActivity().getApplicationContext(), "Failed to Upload Image", Toast.LENGTH_LONG).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
frameLayout = (FrameLayout) findViewById(R.id.frameLayout);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);
webView = findViewById(R.id.webView);
WebSettings mWebSettings = webView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
mWebSettings.setSupportZoom(false);
mWebSettings.setAllowFileAccess(true);
mWebSettings.setAllowFileAccess(true);
mWebSettings.setAllowContentAccess(true);
webView.getSettings().setUserAgentString("satlyk_app");
webView.setWebViewClient(new HelpCliet());
webView.setWebChromeClient(new WebChromeClient() {
// For 3.0+ Devices (Start)
// onActivityResult attached before constructor
protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
{
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
}
// For Lollipop 5.0+ Devices
public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
if (uploadMessage != null) {
uploadMessage.onReceiveValue(null);
uploadMessage = null;
}
uploadMessage = filePathCallback;
Intent intent = fileChooserParams.createIntent();
try {
startActivityForResult(intent, REQUEST_SELECT_FILE);
} catch (ActivityNotFoundException e) {
uploadMessage = null;
Toast.makeText(getActivity().getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
return false;
}
return true;
}
//For Android 4.1 only
protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
{
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
}
protected void openFileChooser(ValueCallback<Uri> uploadMsg)
{
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
}
public void onProgressChanged (WebView view, int progress)
{
frameLayout.setVisibility(View.VISIBLE);
progressBar.setProgress(progress);
setTitle("Ýüklenýär...");
if (progress == 100) {
frameLayout.setVisibility(View.GONE);
setTitle(view.getTitle());
}
super.onProgressChanged(view, progress);
}
});
webView.getSettings() .setJavaScriptEnabled(true);
webView.setVerticalScrollBarEnabled(false);
webView.loadUrl(WebAddress);
progressBar.setProgress(0);
}
private class HelpClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
frameLayout.setVisibility(view.VISIBLE);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();