簡體   English   中英

單擊小部件按鈕時,從MainActivity調用方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM