2

我已经在一个小部件中成功实现了一个 EditText。通过使用以下代码。

    <TextView
        android:id="@+id/edit_widget"
        style="@android:style/Widget.EditText"
        android:layout_width="150dp"
        android:layout_height="29dp"
        android:layout_margin="5dp"
        android:hint="Enter Name"
        android:inputType="number"
        android:nextFocusDown="@+id/btnSave"
        android:paddingLeft="5dp"
        android:textSize="15sp" >
    </TextView>

    <Button
        android:id="@+id/widget_button"
        style="@style/normal_button_gray"
        android:layout_width="74dp"
        android:layout_height="29dp"
        android:layout_margin="4dp"
        android:gravity="center"
        android:minHeight="0dp"
        android:minWidth="0dp"
        android:paddingBottom="0dp"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="0dp"
        android:text="@string/label_Add"
        android:textColorHint="@color/dark_gray"
        android:textSize="14sp" />

以下代码使用 A 类和扩展 BroadcastReceiver

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
    remoteViews.setTextViewText(R.id.ed_expersivecost, "");
    remoteViews.setTextViewText(R.id.txt_appname,context.getString(R.string.app_name));
    remoteViews.setOnClickPendingIntent(R.id.widget_button, MyWidgetProvider.buildButtonPendingIntent(context));

以下代码使用 B 类扩展 AppWidgetProvider

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_demo);
        remoteViews.setOnClickPendingIntent(R.id.widget_button, buildButtonPendingIntent(context));
        //how to get edittext value in here 
    }

    public static PendingIntent buildButtonPendingIntent(Context context) {
        Intent intent = new Intent();
        intent.setAction("com.connectingpixles.intent.action.Addamount");
        return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

但不知道如何从 EditBox Widget 获取文本。任何人都可以帮助我吗?

4

3 回答 3

4

无法在 Home-Widget 上添加编辑框。我有想法在单击主页小部件时打开新的对话框(弹出窗口),例如编辑框小部件位置。

有以下方法用于获取 Home 小部件的点击事件

    public class MyWidgetProvider extends AppWidgetProvider {

         public static Intent intentForWidget(int appWidgetId, String specificIntent) {
        //action to perform
           }

         @Override
            public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds) {
        // modify after take action    
        }

         @Override
            public void onReceive(Context context, Intent intent) {
        //There has called Pop-up window activity
        }


}

这个答案可以帮助你!!!!享受这种 。

于 2013-12-18T13:30:22.190 回答
-3

当您说 EditBox 时,我假设您正在寻找 EditText 小部件。

EditText ed = (EditText) view.findViewById(R.id.your_edit_text_id);
String text = ed.getText();
于 2013-06-05T05:42:38.623 回答
-3

你的 XML 说 TextView

这是您要查找的代码。复制粘贴应该适用于此 XML。

TextView tv = (TextView) view.findViewById(R.id.edit_widget);
String text = tv.getText().toString();

PS:如果您在活动中执行此操作,则view.findViewById变为findViewById

更新1:

OP,您仍然没有提供正确的信息。AppWidgetManager 是一个什么样的类?无论如何,我会对此进行尝试。

您可以TextView在您的Application Class. 添加TextView到您的RemoveViews. 使用此参考从TextView.

另一种方法是使用一个temp String变量并在其中创建一个updateTextString方法class A来更新temp String. 并使用temp String

于 2013-06-05T05:55:43.717 回答