2012-03-06 14 views
1

私は自分のアクティビティ(ポップアップウィンドウの作業を担当するコードはPopupWindowActivityという別のクラスにあります)のレイアウトを持つカスタムポップアップウィンドウを持っています。このポップアップウィンドウでアクティビティを開くボタンを指定したいと思います。いくつかの方法を試しましたが、アプリがNullPointerExceptionでクラッシュしました。ポップアップウィンドウからアクティビティを開始するにはどうすればよいですか?

この活動のコードは以下の通りです:

別の方法で
public class FirstActivity extends Activity implements OnClickListener { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ImageView popupButton = (ImageView) this.findViewById(R.id.popup_btn); 
    likemenuButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      PopupWindow dw = new PopupWindow(v); 
      dw.showLikePopDownMenu(); 
     } 
    }); 
} 

    // my stuff 



//popup window 
private class PopupWindow extends PopupWindowActivity implements OnClickListener { 
    public PopupWindow(View anchor) { 
     super(anchor); 
    } 

    @Override 
    protected void onCreate() { 
     // inflate layout 
     LayoutInflater inflater = 
       (LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null); 

     // setup button events 
     ImageView aboutButton = (ImageView) findViewById(R.id.btn_about); 
     aboutButton.setOnClickListener(this); 

     this.setContentView(root); 
    } 

    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
     case R.id.btn_about: { 
     Intent activity = new Intent(FistActivity.this, About.class); 
     startActivity(activity); 
     break; 
     } 

    } 
}} 

}

private static class PopupWindow extends PopupWindowActivity implements OnClickListener { 
     public PopupWindow(View anchor) { 
     super(anchor); 
    } 

    @Override 
    protected void onCreate() { 
     // inflate layout 
     LayoutInflater inflater = 
       (LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null); 

     // setup button events 
     ImageView searchButton = (ImageView) findViewById(R.id.btn_about); 
     algebraButton.setOnClickListener(this); 


     this.setContentView(root); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.btn_about: { 
      Intent intent = new Intent(); 
      intent.setClass(this, About.class); 

      startActivity(intent); 
      break; 
     } 

     default: 
      break; 
     } 
}} 

日食は、最初に私は、私が持っている、private static class PopupWindow extends PopupWindowActivity implementsからstaticを削除すべきであると述べていますintent.setClass(this, About.class);の場合:

The method setClass(Context, Class<?>) in the type Intent is not applicable for the arguments (FirstActivity.PopupWindow, Class<About>)

お願いします。最初のクラッシュのため


追加ログ:

03-07 00:28:07.750: D/AndroidRuntime(12472): Shutting down VM 
03-07 00:28:07.750: W/dalvikvm(12472): threadid=1: thread exiting with uncaught exception (group=0x40018578) 
03-07 00:28:07.759: E/AndroidRuntime(12472): FATAL EXCEPTION: main 
03-07 00:28:07.759: E/AndroidRuntime(12472): java.lang.NullPointerException 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.example.FirstActivity$PopupWindow.onCreate(FirstActivity.java:110) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.quickaction.PopupWindowActivity.<init>(PopupWindowActivity.java:52) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.example.FirstActivity$PopupWindow.<init>(FirstActivity.java:97) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.example.FirstActivity$1.onClick(FirstActivity.java:30) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.view.View.performClick(View.java:2485) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.view.View$PerformClick.run(View.java:9080) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.os.Handler.handleCallback(Handler.java:587) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.os.Looper.loop(Looper.java:130) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at android.app.ActivityThread.main(ActivityThread.java:3687) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at java.lang.reflect.Method.invokeNative(Native Method) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at java.lang.reflect.Method.invoke(Method.java:507) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
03-07 00:28:07.759: E/AndroidRuntime(12472): at dalvik.system.NativeStart.main(Native Method) 
+0

NullPointerExceptionでクラッシュした場合は、スタックトレースを質問に含めることができますか? – jbowes

+0

@jbowes私はその質問のログを追加しました。 – Sabre

答えて

1

ボタンを押してオン:これを解決する方法はたくさんあります

Intent intent = new Intent("<your-intent-goes-here"); 
<context>.startActivity(intent); 
+0

'' <あなたの意図しているもの ''の代わりに何を置くべきですか? – Sabre

+0

@Sabreマニフェストでのアクティビティのインテントフィルタで定義したインテント。クラスの代わりに、startActivityへのアクセス権を持つコンテキストを入れてください。 – jjNford

+0

@Sabreあなたの場合、PopupWindow.this.startActivity(intent) – jjNford

0

。 1つは、ダイアログのコンストラクタを介してコンテキストへの参照を渡すことです。

+0

コードの例を教えてください。 – Sabre

関連する問題