나는이 같은 클래스를 사용하여 활동 전체의 몇 가지 변수를 공유 해요 : 다음여러 활동에서 "전역"변수를 공유하고 Webview를 사용할 때 문제가 발생합니까?
public class Globals {
static Boolean hint1_graph_type_switcher;
static Boolean hint2_stockview_valuation;
other variables ...
}
내가 ...
if (Globals.hint2_stockview_valuation == false) {
....
}
아주 기본적이고 어디에서나 내 복수하는 행동이를 통해 이러한 변수를 사용하고 있습니다
//-----------------------------------------------------------
// open a webview with the NEWS when the more_arrow is clicked :
mNews.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String news_URL = "http://us.m.yahoo.com/w/yfinance/symbolheadlines/"+ ticker + "/?.intl=us&.lang=en";
Intent news_Webview_intent = new Intent(Chart_View.this, News_Webview.class);
news_Webview_intent.putExtra("NEWS_URL", news_URL);
startActivity(news_Webview_intent);
}
});
//-----------------------------------------------------------
: 그것은
나는이 같은 일부 웹보기 물건을 소개 ... 전까지 잘 작동했다
여기가 News_Webview.class입니다 :
public class News_Webview extends Activity {
//
// http://www.chrisdanielson.com/tag/progressdialog/
//
String news_URL;
private WebView webview;
private ProgressDialog progressBar;
private static final String TAG = "Hub";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.webview_news);
this.webview = (WebView)findViewById(R.id.webView);
Bundle extras = getIntent().getExtras();
if (this.getIntent().getExtras()!=null){
news_URL = extras.getString("NEWS_URL");
}
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
progressBar = ProgressDialog.show(News_Webview.this, "", "Loading...");
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//Log.i(TAG, "Processing webview url click...");
Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse(url));
startActivity(viewIntent);
return true;
}
public void onPageFinished(WebView view, String url) {
//Log.i(TAG, "Finished loading URL: " +url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(TAG, "Error: " + description);
Toast.makeText(News_Webview.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
alertDialog.setTitle("Error");
alertDialog.setMessage(description);
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
alertDialog.show();
}
});
webview.loadUrl(news_URL);
}
}
문제가 지금 내 전역 변수가 사라진처럼 보이는이이 활동에서 "돌아 오는"때이다 ???
if (Globals.hint2_stockview_valuation == false) {
화재 오류 :
12월 6일부터 23일까지 : 14 : 03.443 : ERROR/AndroidRuntime (2611)에 의해 발생 : java.lang.NullPointerException이
2 다음 질문 :
이 "글로벌"클래스보다 많은 활동에서 변수를 공유하고 있습니까? 이것을하는 것이 나쁜 습관입니까 ?? 나는 환경 설정을 사용할 수 있다는 것을 알고 있지만 이렇게하면 더 빨리 할 수 있다고 생각했습니다. (새로운 활동을 시작할 때마다 환경 설정을 "읽을"필요가 없습니다.) ...
왜 이런 일이 벌어지고있는가요? 내 활동으로 항상 News_Webview.class ???에서
을 반환 할 때 나는 당신의 도움을 주셔서 감사합니다, 어떤 방법으로 내 savedInstanceState를 "돌아 가야"한다.
H.
감사합니다. 하지만이 기법 (글로벌 클래스)을 사용하여 더 복잡한 객체를 공유하고 있습니다 ... 그리고 여기에 언급 된 문제를 설명하지는 않습니다. – Hubert
실제로 돌아 왔을 때 활동이 다시 시작된 것처럼 보입니다. savedInstanceState가이 변수를 어딘가에 저장합니까? 어쩌면 내가 다시 돌려줘야 할까?당신의 "활동이 절대 죽지 않도록"어떻게 강요 했습니까? – Hubert
그럼 당신은 onPause()에서 savedInstanceState에 저장하려고 시도 할 수 있습니다 ... 당신의 활동의 onResume()에서 그들을 검색하십시오 ... 이것은 잘 될지도 모른다고 생각합니다 ... – JaVadid