2011-06-24 58 views
0

任何想法如何啓動一個活動並從對話框按鈕發送一個值?如何從對話框中啓動活動?

這就是我目前所擁有的。嘗試了許多變化,但應用程序崩潰時按下按鈕:

dialog.setPositiveButton("View Profile", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     Intent intent = new Intent(); 
     intent.setClass(context, Profile.class); 
     intent.putExtra("profileID", "8");    
     startActivity(intent); 
     dialog.cancel(); 
     return; 
    } 
}); 

滿級:

public class PlacesItemizedOverlay extends ItemizedOverlay { 
    private Context context; 
    private ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 
    private Activity aClass; 

    public PlacesItemizedOverlay(Context aContext, Drawable marker) { 
     super(boundCenterBottom(marker)); 
     context = aContext; 
    } 

    public void addOverlayItem(OverlayItem item) { 
     items.add(item); 
     populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return (OverlayItem) items.get(i); 
    } 

    @Override 
    public int size() { 
     return items.size(); 
    } 

    @Override 
    protected boolean onTap(int index) { 
     aClass = new Activity(); 
     OverlayItem item = (OverlayItem) items.get(index); 
     if(item.getTitle() != null) 
      { 
      AlertDialog.Builder dialog = new AlertDialog.Builder(context); 
      dialog.setTitle(item.getTitle()); 
      dialog.setPositiveButton("View Profile", 
        new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int which) { 
        Intent intent = new Intent(); 
        intent.setClass(context, Profile.class); 
        intent.putExtra("profileID", "8");    
        aClass.startActivity(intent); 
        dialog.cancel(); 
        return; 
       } 
      }); 
      dialog.show(); 
     } 
     return true; 
    } 
} 

的logcat:

06-24 10:35:31.253: WARN/dalvikvm(30118): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118): FATAL EXCEPTION: main 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118): java.lang.NullPointerException 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at android.app.Activity.startActivityForResult(Activity.java:2901) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at android.app.Activity.startActivity(Activity.java:3007) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at com.example.android.test.PlacesItemizedOverlay$1.onClick(PlacesItemizedOverlay.java:57) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at android.os.Looper.loop(Looper.java:143) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):  at dalvik.system.NativeStart.main(Native Method) 
06-24 10:35:31.293: WARN/ActivityManager(1344): Force finishing activity com.example.android.test/.SearchActivity 
+0

'putExtra ()'是正確的使用方法。堆棧跟蹤中的錯誤消息是什麼? – Haphazard

+0

你將不得不裸露在我身邊Haphazard,我還沒有用它來調試。我會看看是否可以找到'堆棧跟蹤'併發布。非常感謝。 – Paul

+0

在命令窗口中鍵入'adb logcat'並查找大錯誤消息。 – Haphazard

回答

0

在按鈕的onClick,我相信你需要啓動活動並使用新活動設置意圖,並在AndroidManifest.xml中引用它。

+0

+1 - 我會猜測活動不在清單文件中。 –

+0

你是什麼意思?您需要參考清單中的所有活動。 – karlstackoverflow

+0

對不起大家,活動在清單文件中,但是我現在在setClass中出現錯誤,我將在上面進行更新。感謝您的輸入:) – Paul

1

你檢查你所添加的Profile.class在清單文件中像這樣的:

<activity android:name=".Profile" /> 
+0

是的,它粘在那裏。 – Paul

+0

嘗試檢查您的導入是否正確,我已經在我的代碼中運行了它,並且它的工作順序如下:import android.content.DialogInterface; import android.content.Intent; – user812892

+0

謝謝您花時間檢查它,我很感激。看看代碼對我來說似乎很好,但現在它只是不喜歡setClass。這想我會發布完整的文件,只是因爲我在某處設置了一些愚蠢的衝突...... – Paul

0

我最終不得不重組的代碼,這裏是結束了工作:

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setTitle(item.getTitle()) 
.setCancelable(true) 
.setPositiveButton("View Details", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     Intent intent = new Intent(mContext, Profile.class); 
     intent.putExtra("id", item.getSnippet()); 
     mContext.startActivity(intent); 
     } 
    }); 
AlertDialog alert = builder.create(); 
alert.show(); 
return true; 
相關問題