【问题标题】:Using getUrl() variable in outer/upper class在外部/上层类中使用 getUrl() 变量
【发布时间】:2016-11-16 20:25:22
【问题描述】:
String url = "http://xxxx.com/login.php?UID=";
String uid = portal.mysharedvars.getString("uid");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_personel_activity);
/*if(newurl.toLowerCase().contains("index.php")) {
I want to do somethings here
                                                 }
*/

    WebView siteview = (WebView) findViewById(R.id.personel_webview);
    siteview.setWebViewClient(new MywebViewClient());

    final String link = url+uid;
    siteview.loadUrl(link);
}
private class MywebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(url);
        return true;
    }
    public void onPageFinished(WebView view, String url) {
        // do your stuff here
        String newurl = view.getUrl();
        Toast.makeText(login_personel_webview.this, newurl, Toast.LENGTH_LONG).show();
                                                             }

正如您在上面看到的,我的 webview 活动中有一个带有 onPageFinished public 的链接变量。我想在带有 if 语句的星号行中使用该变量。我怎么能在那里使用那个变量?

编辑:ofc 链接不会像开始时声明的那样是静态的。 Tats只是登录页面。比很多页。

【问题讨论】:

  • 所以你想访问 onCreate() 方法中的 newurl 变量?
  • 是的,威廉。没错。

标签: java android class methods webview


【解决方案1】:

尝试通过回调来做到这一点

String url = "http://xxxx.com/login.php?UID=";
String uid = portal.mysharedvars.getString("uid");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView siteview = (WebView) findViewById(R.id.personel_webview);
    siteview.setWebViewClient(new MywebViewClient(new Callback() {
        @Override
        public void onPageUrl(String url) {
           if (url.toLowerCase().contains("index.php")) {
               //Do what you want here
           }
        }
    }));

    final String link = url+uid;
    siteview.loadUrl(link);
}
private class MywebViewClient extends WebViewClient {

    Callback callback;

    public MywebViewClient(Callback callback) {
        this.callback = callback;
    }

    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(url);
        return true;
    }

    public void onPageFinished(WebView view, String url) {
        // do your stuff here
        String newurl = view.getUrl();
        callback.onPageUrl(newurl);
        Toast.makeText(login_personel_webview.this, newurl, Toast.LENGTH_LONG).show();
    }
}

public interface Callback {
    void onPageUrl(String url);
}

【讨论】:

  • 谢谢德米特里。完美运行。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 2014-11-17
  • 1970-01-01
相关资源
最近更新 更多