2011-06-24 17 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:ボタンのonClickで

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、Imこれをまだデバッグするのに慣れていません。私は 'スタックトレース'を見つけて投稿できるかどうかを確認します。どうもありがとう。 – Paul

+0

コマンドウィンドウに 'adb logcat'と入力し、大きなエラーメッセージを探します。 – Haphazard

答えて

0

を、私はあなたがする必要があると考えています新しいアクティビティを使用してインテントを設定し、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; 
関連する問題