2013-01-02 4 views
0

J'utilise une activité de configuration pour basculer la visibilité de différentes vues dans le fichier xml en utilisant RemoteViews. Au début, je pensais que, puisque l'activité de configuration est appelée avant que le widget est réglé, je ne reviendrai pas besoin de mettre à jour, donc je l'ai utilisé:AppWidget ne fonctionnera pas

package com.example.test.clock.one; 

import android.app.Activity; 
import android.appwidget.AppWidgetManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.RemoteViews; 

public class chooseract extends Activity 
{ 
int mAppWidgetId; 
RemoteViews rv; 
AppWidgetManager appWidgetManager; 
Context context; 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
} 
public void buttonhandler(View view) 
{ 
    rv = new RemoteViews(context.getPackageName(), R.layout.activity_main); 
    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    if (extras != null) 
    { 
     mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID); 
    } 
    switch(view.getId()) 
    { 
     case R.id.button1: 
     { 
      rv.setViewVisibility(R.id.analogClock1, View.VISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.INVISIBLE); 

       finish(); 
          break; 
     } 
     case R.id.button2: 
     {    
      rv.setViewVisibility(R.id.analogClock1, View.INVISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.VISIBLE); 
      finish(); 
          break; 

     } 
    } 


} 
} 

mais qui définit juste un widget vide (visibilité par défaut est INVISIBLE) alors i mise à jour du appwidget essayé après l'aide sur la visibilité

package com.example.test.clock.one; 

import android.app.Activity; 
import android.appwidget.AppWidgetManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.RemoteViews; 

public class chooseract extends Activity 
{ 
int mAppWidgetId; 
RemoteViews rv; 
AppWidgetManager appWidgetManager; 
Context context; 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
} 
public void buttonhandler(View view) 
{ 
    rv = new RemoteViews(context.getPackageName(), R.layout.activity_main); 
    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    if (extras != null) 
    { 
     mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID); 
    } 
    switch(view.getId()) 
    { 
     case R.id.button1: 
     { 
      rv.setViewVisibility(R.id.analogClock1, View.VISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.INVISIBLE); 
      break; 

     } 
     case R.id.button2: 
     {    
      rv.setViewVisibility(R.id.analogClock1, View.INVISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.VISIBLE); 
      break; 

     } 
    } 

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
    appWidgetManager.updateAppWidget(mAppWidgetId, rv); 
    Intent resultValue = new Intent(); 
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); 
    setResult(RESULT_OK, resultValue); 
    finish(); 
} 
} 

mais cette force vient se ferme lorsque je touche les boutons avec une NullPointerException Toutes les idées?

Répondre

0
public class MainActivity extends Activity implements OnClickListener{ 

private int mAppWidgetId; 
private RemoteViews rv; 
private AppWidgetManager appWidgetManager; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);  



    rv = new RemoteViews(this.getPackageName(), R.layout.activity_main); 
    Button button1 = (Button)findViewById(R.id.button1); 
    Button button2 = (Button)findViewById(R.id.button2); 

    AnalogClock cos1 = (AnalogClock)findViewById(R.id.analogClock1); 
    AnalogClock cos2 = (AnalogClock)findViewById(R.id.analogClock2); 

    button1.setOnClickListener(this); 
    button2.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    if (extras != null) 
    { 
     mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID); 
    } 
    switch(view.getId()) 
    { 
     case R.id.button1: 
     { 
      rv.setViewVisibility(R.id.analogClock1, View.VISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.INVISIBLE); 
      break; 

     } 
     case R.id.button2: 
     {    
      rv.setViewVisibility(R.id.analogClock1, View.INVISIBLE); 
      rv.setViewVisibility(R.id.analogClock2, View.VISIBLE); 
      break; 

     } 
    } 

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); 
    appWidgetManager.updateAppWidget(mAppWidgetId, rv); 
    Intent resultValue = new Intent(); 
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); 
    setResult(RESULT_OK, resultValue); 
    finish(); 
} 

}

j'ai ajouté quelques corrections et ne jette pas une erreur. :)

+0

: O je vous dois du BIG time: O – QuantumFoam