2015-01-09 4 views
0

주 활동에서 WebView의 현재 URL을 가져 와서 사용자 정의 DialogPreference에서 사용자의 TextView로 표시하려고합니다. 내 어려움은 지금 내가 전화 할 때마다, null이 반환됩니다. 그녀는 웹보기가 null을 반환하게하는 뭔가 잘못하고기본보기에서 WebView.getUrl()을 호출하면 null이 반환됩니다.

public class CustomAlertPreference extends DialogPreference { 

String currentURL = "HARDCODED TEST"; 
public CustomAlertPreference(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setDialogLayoutResource(R.layout.custom_alert_preference); 
    setPositiveButtonText(android.R.string.ok); 
    setNegativeButtonText(android.R.string.cancel); 
} 


@Override 
protected void onBindDialogView(View view) { 
    LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view2 = layoutInflater.inflate(R.layout.activity_main, null); 
    WebView webview = (WebView)view2.findViewById(R.id.shopFloorView); 
    currentURL = webview.getUrl(); 
    TextView txview = (TextView) view.findViewById(R.id.URLCurrent); 
    txview.setText(currentURL); 
} 

@Override 
public void onClick(DialogInterface dialog, int which) { 
    if (which == DialogInterface.BUTTON_POSITIVE) { 
     SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext()); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("prefWMl", currentURL); 
     editor.commit(); 
     Toast toast = Toast.makeText(getContext(), "URL changed to " + currentURL, Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

암 :

다음은 사용자 정의 DialogPreference 내 코드입니까? 나는 페이지가 완전히로드되도록했다. 그래서 그렇지 않다. 사전에

감사합니다, 요한 복음

답변

0

귀하의 WebView 복귀는 아직로드되지 않았기 때문에 null URL.

WebViewClient을 추가하고 onPageFinished()을 재정 의하여 URL을 올바르게 캐어 보내보십시오.

private String currentURL; 

// ... 

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     currentURL = url; 
    } 
}); 
webView.loadUrl("an URL"); 
+0

필요에 따라 현재 URL에 액세스해야합니다. (사용자가 내 DialogPreference를 열면) – DeadlyJohny

+0

'currentURL'에 그냥 들어 있지 않나요? – shkschneider

+0

그게 포함되어 있다고 생각합니다. 당신이 제안한 함수를 추가하는 것은 특정 시간에 호출되지 않은 것 같습니다. customAlertPreference는 환경 설정 활동 안에 있고 WebView는 내 주요 활동 안에 있다는 것을 상기시켜야합니다. – DeadlyJohny