Java Android小部件按钮根本不工作,如何使其工作?

Java Android小部件按钮根本不工作,如何使其工作?,java,android,mobile,gradle,widget,Java,Android,Mobile,Gradle,Widget,我会说我对安卓一点经验都没有,以此作为前提 我只是想简单地将textView tv1更新为当按下按钮时从网络上抓取的一些数据,当按下按钮时,现在什么都没有发生,我不知道为什么 以下是我的provider类中必要的方法 public static String WIDGET_BUTTON = "com.beninga.android.mobilenexus.WIDGET_BUTTON"; RemoteViews remoteViews; AppWidgetManager appWidgetMana

我会说我对安卓一点经验都没有,以此作为前提

我只是想简单地将textView tv1更新为当按下按钮时从网络上抓取的一些数据,当按下按钮时,现在什么都没有发生,我不知道为什么

以下是我的provider类中必要的方法

public static String WIDGET_BUTTON = "com.beninga.android.mobilenexus.WIDGET_BUTTON";
RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
Context context;
Player[] players;
private int[]  appwidgetIds;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    this.appWidgetManager = appWidgetManager;
    this.appwidgetIds = appWidgetIds;
    for(int i =0; i < appWidgetIds.length; i++) {
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
        thisWidget = new ComponentName(context, MobileNexus.class);
        this.context = context;
        System.out.println("did this run");
        remoteViews.setOnClickPendingIntent(R.id.button, getRefreshPendingIntent());
        appWidgetManager.updateAppWidget(thisWidget, remoteViews);

    }
}
private PendingIntent getRefreshPendingIntent(){
        Intent intent = new Intent(context, getClass());
        intent.setAction(WIDGET_BUTTON);
        return PendingIntent.getBroadcast(context, 0, intent, 0);
    }

public void onReceive(Context context, Intent intent) {
    appWidgetManager = AppWidgetManager.getInstance(context);
    System.out.println(intent.getAction()+ "was recieved");
    if (intent.getAction().equals(WIDGET_BUTTON)) {
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
        remoteViews.setOnClickPendingIntent(R.id.button, getRefreshPendingIntent());
        System.out.println("IT GOT CALLED");
        String url = findUrl();
        new RetrieveData().execute(url);


    }
    super.onReceive(context, intent);
}
按下按钮时,onclickpending从不触发操作

编辑:我明白了!删除INTERNET代码并执行此操作

PendingIntent pi = PendingIntent.getBroadcast(context,0, in,0);
        remoteViews.setOnClickPendingIntent(R.id.button,pi);
并将GetRefreshPending帐篷主体替换为

private PendingIntent getRefreshPendingIntent(){
        Intent in = new Intent(WIDGET_BUTTON);
        return PendingIntent.getBroadcast(context,0, in,0);

    }

显示您的
OnCreate
方法添加了我的OnCreate方法。现在告诉我您基本上想要实现什么?点击按钮会发生什么?我想将我的TextView tv1中显示的文本更改为我从网上抓取的内容。你为什么要使用广播接收器?你收到推送通知了吗?如果没有,那么我认为你走错了方向。要使用web url更新textview,只需一行代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:layout_gravity="center"
tools:context=".MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Loading!"
    android:id="@+id/Tv1"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:maxLines="12"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.conifgure_layout);
    setResult(RESULT_CANCELED);
    context = this;

    Bundle extras = getIntent().getExtras();
    if(extras != null){
        widgetID = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    }
    AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
    final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
    final EditText et = (EditText) findViewById(R.id.user);
    et.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId,
                                      KeyEvent event) {
            if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                // NOTE: In the author's example, he uses an identifier
                // called searchBar. If setting this code on your EditText
                // then use v.getWindowToken() as a reference to your
                // EditText is passed into this callback as a TextView

                in.hideSoftInputFromWindow(v
                                .getApplicationWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
                // Must return true here to consume event
                return true;

            }
            return false;
        }
    });
    final RadioGroup rg = (RadioGroup) findViewById(R.id.checks);
    Button b = (Button) findViewById(R.id.finished);
    final RadioButton selected = (RadioButton) findViewById(rg.getCheckedRadioButtonId());


    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            context.savePreferences("Username", et.getText().toString());
            context.savePreferences("Server", selected.getText().toString());
            String url = null;
            try {
                url = "this is a valid url, "UTF-8");
                System.out.println(url);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            new RetrieveData().execute(url);
            new MobileNexus()
                    .onUpdate(context,
                            AppWidgetManager.getInstance(context),
                            new int[] { widgetID }
                    );

            AppWidgetManager.getInstance(context).updateAppWidget(widgetID, remoteViews);
            Intent resultValue = new Intent();
            resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
            setResult(RESULT_OK, resultValue);
            finish();
        }
    });
}
PendingIntent pi = PendingIntent.getBroadcast(context,0, in,0);
        remoteViews.setOnClickPendingIntent(R.id.button,pi);
private PendingIntent getRefreshPendingIntent(){
        Intent in = new Intent(WIDGET_BUTTON);
        return PendingIntent.getBroadcast(context,0, in,0);

    }