Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AppWidgetManager是否在onUpdate之外?_Android_Variables_Text_Widget_Textview - Fatal编程技术网

Android AppWidgetManager是否在onUpdate之外?

Android AppWidgetManager是否在onUpdate之外?,android,variables,text,widget,textview,Android,Variables,Text,Widget,Textview,我有一个简单的小部件,我尝试在onUpdate方法之外更新它的内容。我创建了:context和appWidgetManager字段变量,编译器没有给出任何错误,但在声明appWidgetManager的那两行上收到了NullPointerException 有人能帮我理解为什么将这些变量转换成字段变量仍然会产生NPE吗 private void ref(int z) { views.setTextViewText(R.id.igePrint, ige[z].azIge); A

我有一个简单的小部件,我尝试在onUpdate方法之外更新它的内容。我创建了:context和appWidgetManager字段变量,编译器没有给出任何错误,但在声明appWidgetManager的那两行上收到了NullPointerException

有人能帮我理解为什么将这些变量转换成字段变量仍然会产生NPE吗

private void ref(int z) {

    views.setTextViewText(R.id.igePrint, ige[z].azIge);

    AppWidgetManager manager = AppWidgetManager.getInstance(context);
    manager.updateAppWidget(thisWidget, views);
    //Log.e("<<check value>>", "the value of z is: " + z);
}
private void ref(int z){
views.setTextViewText(R.id.igePrint,ige[z].azIge);
AppWidgetManager=AppWidgetManager.getInstance(上下文);
updateAppWidget(这个小部件,视图);
//Log.e(“,”z的值为:“+z”);
}
以及代码的其他部分:

   package com.example.napiige;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.TextView;

public class MainActivity extends AppWidgetProvider {

    RemoteViews views;
    String azIge;   
    String igeBack;
    static MainActivity[] ige = new MainActivity[3];
    int x;
    public static ComponentName thisWidget;

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            x = (Integer)msg.obj;   
            ref(x);
        }       

       };

    Context context;


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

        views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
        thisWidget = new ComponentName(context, MainActivity.class);

        final int N = appWidgetIds.length;
        // Perform this loop procedure for each App Widget that belongs to this provider
        for (int i=0; i<N; i++) {
        int appWidgetId = appWidgetIds[i];

        String ig1 = context.getString(R.string.ige1);
        String ig2 = context.getString(R.string.ige2);
        String ig3 = context.getString(R.string.ige3);

        ige = new MainActivity[3];

        ige[0] = new MainActivity();
        ige[1] = new MainActivity();
        ige[2] = new MainActivity();

        ige[0].azIge = ig1;
        ige[1].azIge = ig2;
        ige[2].azIge = ig3;


        Runnable myRunnable1 = new Task(); 
        Thread myThread = new Thread(myRunnable1);
        myThread.start();

        appWidgetManager.updateAppWidget(thisWidget, views);

        }
    }

    private void ref(int z) {

        views.setTextViewText(R.id.igePrint, ige[z].azIge);

        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(thisWidget, views);
        //Log.e("<<check value>>", "the value of z is: " + z);

    }


    class Task implements Runnable {
    @Override
        public void run() {             
            for (int i = 0; i < 3; i++) {                   
                try {
                Thread.sleep(3000); 
                // refreshing the text inside the loop calling the above refreshTextView method

                int data = i;

                Message msg = handler.obtainMessage(1, (int)data);
                handler.sendMessage(msg);

                } catch (InterruptedException e) {
                    e.printStackTrace();
           }
        }
     }
  }

}
package com.example.napiige;
导入android.appwidget.AppWidgetManager;
导入android.appwidget.AppWidgetProvider;
导入android.content.ComponentName;
导入android.content.Context;
导入android.os.Handler;
导入android.os.Message;
导入android.util.Log;
导入android.widget.remoteview;
导入android.widget.TextView;
公共类MainActivity扩展了AppWidgetProvider{
远程视图;
弦叠层;
线背;
静态MainActivity[]ige=新的MainActivity[3];
int x;
公共静态组件名称thisWidget;
Handler=newhandler(){
@凌驾
公共无效handleMessage(消息消息消息){
x=(整数)msg.obj;
参考文献(x);
}       
};
语境;
@凌驾
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
视图=新的远程视图(context.getPackageName(),R.layout.example\u appwidget);
thisWidget=新组件名称(上下文,MainActivity.class);
final int N=appWidgetIds.length;
//对属于此提供商的每个应用程序小部件执行此循环过程

对于(int i=0;iappWidgetManager
字段在那里是空的,因为你从来没有给它赋值。

感谢@Toon Borgers的建议…我试图添加一个值,但我最终遇到了另一个NullPointerException,我找不到一种方法从更新时的内部将其作为目标…(我尝试了:“AppWidgetManager=AppWidgetManager.getInstance(上下文);manager.UpdateAppWidgetWidget(此小部件,视图);”-您能演示一下如何使用一些代码吗?(我已经更新了页面顶部的代码)