在Android小部件中创建按钮

时间:2010-02-12 09:13:52

标签: android button widget

我正在尝试为SMS小部件编写代码。我写了一些我可以编译的东西,并在屏幕上打印我的第一条短信。当我点击下一步时,什么也没发生。 这是我的代码:

package android.MySMSwidget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RemoteViews;
import android.content.ComponentName;
import android.content.Context;
import android.database.Cursor;
import android.app.*;

public class MySMSwidget extends AppWidgetProvider implements View.OnClickListener {


private Button Bnext;
private int sms_id=0;
public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.widget_layout);
            final Button button = (Button) findViewById(R.id.next);
             button.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     if (v==Bnext){sms_id=sms_id+1;}
                 }

             });
     }

  }

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

    Cursor c = context.getContentResolver().query(Uri.parse("content://sms/"), null, null ,null,null);
    String body = null;
    String number = null;
    String date = null;
    c.moveToPosition(sms_id);

    body = c.getString(c.getColumnIndexOrThrow("body")).toString();
    number = c.getString(c.getColumnIndexOrThrow("address")).toString();
    date = c.getString(c.getColumnIndexOrThrow("date")).toString();


    c.close();

    RemoteViews updateViews = new RemoteViews(context.getPackageName(),
            R.layout.widget_layout);

    updateViews.setTextColor(R.id.text, 0xFF000000);
    updateViews.setTextViewText(R.id.text,date+'\n'+number+'\n'+body);
    ComponentName thisWidget = new ComponentName(context, MySMSwidget.class);
    appWidgetManager.updateAppWidget(thisWidget, updateViews);
 }
public void onClick(View v) {
         if (v==Bnext){sms_id=sms_id+1;}
 }

 }

如果有人能向我解释我错在哪里以及为什么错,我将不胜感激。 谢谢你的阅读。

1 个答案:

答案 0 :(得分:0)

通常,无法向标准Android小部件添加交互式控件。您可以检测到Widget本身的点击。