2016-10-04 5 views
1

onclick 이벤트 및 위젯에 대해 10 개의 게시물을 읽었으며 서로 다르게 구현된다는 것을 알고 있습니다. 그러나 성공에도 불구하고 다른 사람들은 내가 일하는 것을 불가능하게하는 것처럼 보입니다. Android Studio 2.2를 사용 중이며 간단한 테스트 앱을 만들었습니다. 버튼이라는 버튼이 있습니다. 버튼을 누르면 축배가 표시됩니다.Android 위젯의 Onclick 이벤트

나는 다른 게시물에서 제안한대로 코드를 복사했습니다. 누군가가 한 번 살펴보고 내가 잘못한 것을 볼 수 있습니까?

public class NewAppWidget extends AppWidgetProvider { 

    private static final String MyOnClick = "myOnClickTag"; 

    protected PendingIntent getPendingSelfIntent(Context context, String action) { 
     Intent intent = new Intent(context, getClass()); 
     intent.setAction(action); 
     return PendingIntent.getBroadcast(context, 0, intent, 0); 
    } 

    void updateAppWidget(Context context, AppWidgetManager appWidgetManager, 
          int appWidgetId) { 

     CharSequence widgetText = context.getString(R.string.appwidget_text); 
     // Construct the RemoteViews object 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget); 


     views.setOnClickPendingIntent(R.id.button, getPendingSelfIntent(context, MyOnClick)); 

     views.setTextViewText(R.id.appwidget_text, widgetText); 



     // Instruct the widget manager to update the widget 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 

    //RemoteViews.setOnClickPendingIntent(R.id.button, getPendingSelfIntent(context, MyOnClick)); 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     // There may be multiple widgets active, so update all of them 
     for (int appWidgetId : appWidgetIds) { 

      updateAppWidget(context, appWidgetManager, appWidgetId); 
     } 
    } 

    @Override 
    public void onEnabled(Context context) { 
     // Enter relevant functionality for when the first widget is created 
    } 

    @Override 
    public void onDisabled(Context context) { 
     // Enter relevant functionality for when the last widget is disabled 
    } 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     super.onReceive(context, intent);//add this line 
     if (MyOnClick.equals(intent.getAction())){ 
      //your onClick action is here 
      //display in short period of time 
      Toast.makeText(context, "msg msgasdasd", Toast.LENGTH_SHORT).show(); 

     } 
    }; 
} 

답변

2

확인 - 정말 이상합니다. 안드로이드 에뮬레이터를 다시 시작하면 작동을 시작합니다.

mmmm.

건배