0

困惑しています。数日前、これは正常に機能していました。私はいくつかの変更を加えましたが、今では非常に奇妙な動作をしています。

初めて関数を呼び出すと、0が返されます。2回目は、コードの後半で、適切な時刻が返されます。

皆さんが診断できるように、クラスファイルのほとんどをここに貼り付けています。

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.newsdetail);

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
selectedNewsItem = newsList.get(_index);
            AlertDialog.Builder alert = new AlertDialog.Builder(NewsDetail.this);

            alert.setTitle(selectedNewsItem.getTitle());
            WebView wv = new WebView(NewsDetail.this);
            wv.getSettings().setUserAgentString("Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC6-00/20.0.042; Profile/MIDP-2.1 Configuration/CLDC-1.1; zh-hk) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.2.6.9 3gpp-gba");
            wv.getSettings().setSupportZoom(false);
            wv.loadUrl(selectedNewsItem.getLink());
            wv.setWebViewClient(new WebViewClient()
            {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    view.loadUrl(url);
                    startTime = System.currentTimeMillis();
                    return true;
                }
            });

            alert.setView(wv);
            alert.setOnKeyListener(new OnKeyListener()
            {
                boolean didItHappen = false;
                int happencount = 0;
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
                {
                    if(keyCode == event.KEYCODE_BACK)
                    {
                        happencount++;
                        endTime = System.currentTimeMillis();
                        Log.d("StartTime: ", String.valueOf(startTime));
                        Log.d("EndTime: ", String.valueOf(endTime));
                        totalTime = (endTime - startTime) / 1000;

                        if(happencount == 2)
                        {
                            Log.d("Time Spent: ", totalTime + " seconds");
                            didItHappen = true;
                        }
                    }
                    if(happencount == 2)
                    {
                        SharedPreferences shp;
                        SharedPreferences.Editor ed;                            
                        shp = getSharedPreferences("timespent", MODE_PRIVATE);
                        ed = shp.edit();

                        ed.putString("Title", selectedNewsItem.getTitle());
                        ed.putLong("Time", totalTime);
                        ed.putString("*****", "*****");                         
                        ed.commit();

                        startTime = 0;
                        endTime = 0;
                        totalTime = 0;
                        happencount = 0;
                    }

                    return false;
                }
            });
            alert.show();               
        }
    });
}
4

1 に答える 1

3

startTimeSystem.currentTimeMillis()設定時に0を返す証拠があるかどうかはわかりませんstartTime。ハンドラーのshouldOverrideUrlLoading前に呼び出されなかった可能性がはるかに高く、それだけです。onKey()

于 2012-09-26T09:57:33.413 に答える