0

当我也只为 2 个值调试时,TextView 正在更新,然后它停止了。如果我运行该应用程序,则不会打印任何内容。和上下文有关系吗??请帮忙。这是我的代码。

//ListViewWidget.java

    public class ListViewWidget extends AppWidgetProvider{

        public static String name="Initial text";
        public static Context mContext;
        public static RemoteViews updateViews;
        public static ComponentName thisWidget;
        FetchTask fetchTask=new FetchTask();

        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                int[] appWidgetIds) {

            super.onUpdate(context, appWidgetManager, appWidgetIds);
            updateViews = new RemoteViews(context.getPackageName(), R.layout.list_layout);
            //updateViews.setTextViewText(R.id.text_view,name);
            thisWidget = new ComponentName(context, ListViewWidget.class);

            fetchTask.execute();
         AppWidgetManager.getInstance(context.getApplicationContext());
            //manager.updateAppWidget(thisWidget, updateViews);
            mContext = context;
        }

public static class FetchTask extends AsyncTask<URL,Integer,String> implements ServerRequestEnvironment{

//all network calls done 

受保护的字符串doInBackground(URL ... arg0){

        ServerThreadState m_state = ServerThreadState.Idle;
        int networkTimeoutMS = 0;
        Dispatchable2 request = new OpIdentityPreAuth(this, null);

        ServerRequest2 sr = (ServerRequest2) request;
        final NetworkTiming nt = sr.getNetworkTiming();

        nt.setDequeued();

        if ((!sr.isKilled()) && sr.isSuccess()) {
            m_state = ServerThreadState.Computing;
            //this processPreconditions do nothing
            sr.processPreconditions();
            sr.computeRequest();
            nt.setComputed();
        }

        if ((!sr.isKilled()) && sr.isSuccess() && sr.preconditionsSatisfied()) {

            m_state = ServerThreadState.Executing;
            sr.execute(networkTimeoutMS);

        }
        try {
            sr.parse(null, sr.replyString);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        response=((OpIdentityPreAuth)sr).getResponse();
        accessToken=response.getAccessToken(); //token generated and received
        //end token retrieval



        LocalStoreSearchResp storeResponse=new LocalStoreSearchResp();

        OpLocalStoreSearch respObj=new OpLocalStoreSearch(Core.getSi(), request2, null);
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(NetworkUtils.getHttpClient(request, 90000)));
        restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
        restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

        HttpEntity<String> entity = new HttpEntity<String>("", getRequestHeaders());

        ResponseEntity<String> httpResponse = restTemplate.exchange("https://api.paypal.com/v1/stores?view=local&lat=37.3754664&lng=-121.9239147&radius=50&count=20&start_id=1&country_code=US", HttpMethod.GET, entity, String.class);

        LocalStoreSearchResp store = new LocalStoreSearchResp();
        try {
            store= Utils.inflateJson(httpResponse.getBody(), LocalStoreSearchResp.class);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        storeResponse=respObj.getResponse(); //storeResponse is empty
        //store=respObj.getResponse();
        Log.i("StoreTag","store:"+store); //store populated with stores



//the result to be passed and updated
        int i = new Random().nextInt(25);
    storeObject=store.getStores().getItems().get(i).getStore();

    name= storeObject.getName();
    Log.i("StoreTag","storeval:"+name); //returns name of item      

    return name;
}

protected void onPostExecute(String name) {
            // TODO Auto-generated method stub
            Intent intent=new Intent("android.appwidget.action.APPWIDGET_UPDATE");

            PendingIntent pendingIntent=PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            Log.i("TagVAl:","PI-"+pendingIntent);
            updateViews.setTextViewText(R.id.text_view,name);
            updateViews.setOnClickPendingIntent(R.id.next, pendingIntent);

            AppWidgetManager manager = AppWidgetManager.getInstance(mContext);
            manager.updateAppWidget(thisWidget, updateViews);
        }
4

0 回答 0