2010-02-12 110 views
0

我正在尝试为SMS小部件编写代码。我写了一些可以编译的东西,并在屏幕上打印我的第一条短信。当我点击下一个,什么都没有发生。 这是我的代码:在Android小部件中创建按钮

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;} 
} 

} 

如果有人能向我解释地方,为什么我错了,我会很感激。 感谢您的阅读。

回答

0

通常不可能向标准Android Widget添加交互控件。您可以检测到Widget本身的点击。