2011-06-05 68 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

相關問題