2011-06-05 72 views
1

所以我一直在努力几个小时才能使这个工作,我不能为我的生活弄清楚。我尝试了许多不同的想法,只是使用Google搜索,但没有任何运气。我正在尝试创建一个android小部件,您可以单击图像并使用默认浏览器打开网站。我能够正确地获取图像和小部件,但是当我尝试实施按钮的代码以打开网站时,它会杀死小部件并在手机上显示“加载小部件时出现问题”。我对制作窗口小部件/应用程序相当陌生,所以不胜感激。 我如何使小部件工作?如何使用按钮从Android小部件的浏览器中打开网站?

这里是我的代码:

main.xml中

$<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/widget_frame_portrait" 
> 
    <TextView android:id="@+id/xmas" 
     android:layout_toRightOf="@+id/refresh" 
     android:layout_width="wrap_content" 
     android:layout_height="50dip" 
     android:text="@string/hello" 
     android:layout_marginTop="37dip" 
     android:layout_marginBottom="25dip" 

     android:layout_marginRight="5dip" 

     android:orientation="vertical" 
     android:textColor="#000000"/> 

    <ImageButton 
     android:layout_height="50dip" 
     android:id="@+id/refresh" 
     android:background="@drawable/feep" 
     android:layout_width="225dip" 
     android:layout_marginTop="25dip" 
     android:layout_marginBottom="25dip" 
     android:layout_marginLeft="25dip" 
     android:layout_marginRight="1dip" 
     android:orientation="horizontal" 

     android:clickable="true" 
     android:onClick="openWebUrl" 
    /> 
</RelativeLayout> 

我唯一的活动称为bGiving.Java:

$package chris.days.to; 

import android.app.Activity; 
import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.view.View; 
import android.widget.Button; 

public class bGiving extends Activity implements View.OnClickListener { 

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

    } 

    public void openWebURL(View v) { 
     String url = "http://google.com"; 

     Intent i = new Intent(Intent.ACTION_VIEW); 

     i.setData(Uri.parse(url)); 

     startActivity(i); 
    } 

    public void onClick(View v) { 

    } 
} 

and my Android Manifest is: 

    $<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="chris.days.to" 
     android:versionCode="1" 
     android:versionName="1.0"> 
     <uses-sdk android:minSdkVersion="4" /> 

     <application android:icon="@drawable/icon" android:label="@string/app_name"> 

      <receiver android:name=".DaysToXmas" android:label="@string/app_name"> 
       <intent-filter> 
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
       </intent-filter> 
       <meta-data android:name="android.appwidget.provider" 
          android:resource="@xml/hello_widget_provider" /> 
      </receiver> 

      <activity android:name=".bGiving" 
         android:label="@string/app_name"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 

     </application> 
    </manifest> 

当我把代码添加为主。 xml“android:onClick =”openWebUrl“它会杀死该控件。

回答

1

将您的Button设置为PendingIntent。这会在按下Button时导致Intent执行。

Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(data); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    remoteView.setOnClickPendingIntent(R.id.button, pendingIntent); 
+0

为什么你必须在其中有一个remoteView对象?这是做什么的? – Rmyers 2011-06-16 01:46:48

+0

应该在哪里设置 - 在服务或AppWidgetProvider中?并用什么方法? – 2013-10-21 18:19:03

相关问题