[英]Call a method from MainActivity when a widget button is clicked
我想通過單擊AppWidgetProvider
中的小部件按鈕從MainActivity
調用特定方法。 我已經設置了只有一個按鈕的布局,並創建了widget.xml
。 我的問題是,當我單擊要從My MainActivity
調用方法的按鈕時,什么也沒有發生。
這是我的AppWidgetProvider類
public class NewAppWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
}
@Override
public void onEnabled(Context context) {
}
@Override
public void onDisabled(Context context) {
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = context.getString(R.string.appwidget_text_balance);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
}
這是我的MainActivity.class
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void makeText(String message){
Toast.makeText(this,message,Toast.LENGHT_SHORT).show();
}
public void calculateData(){
//Something in here
}
}
這是我的AndroidManifest.xml
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--declare new widget-->
<receiver android:name=".NewAppWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/new_app_widget_info" />
</receiver>
基本上,您要的是在兩個類之間共享一個方法,對嗎?
有很多方法可以做到,就像共享任何其他數據一樣。
使用可以全局訪問的類:
即-
public class GlobalMethods{
public static void calculateData(){
....
}
}
並從其他類文件中訪問它:
GlobalMethods.calculateData(...);
我猜想您想從mainActivity內調用calculateData()
,因為該類中可能要編輯數據。
在這種情況下,也許您應該考慮使用接口或單例在活動/類之間共享數據。
在此處查看一些有關如何完成此操作的示例。
並非所有示例都適用於您的情況,但是您應該從中得到一些想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.