2010-02-12 3 views
0

J'essaie d'écrire un code pour un widget SMS. J'ai écrit quelque chose que je peux compiler, et imprimer à l'écran mon premier SMS. Quand je clique sur suivant, rien ne s'est passé. Voici mon code:Création d'un bouton dans un widget 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;} 
} 

} 

Si quelqu'un peut me expliquer où et pourquoi je me trompe, je serai reconnaissant. Merci de m'avoir lu.

Répondre

0

Généralement, il n'est pas possible d'ajouter des contrôles interactifs aux widgets Android standard. Vous pouvez détecter un clic sur le widget lui-même.