OnClickListener不适用于片段活动

时间:2014-02-02 23:04:04

标签: android android-fragments onclicklistener

我有使用片段的活动。但如果我想使用OnClickListener,我的应用程序就破解了。如果我不使用OnClickListener,一切都很好。我怎么解决这个问题 ?这是我的代码。

public class MeinActivity extends Activity {
    public static Context appContext;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


  FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();   
    MainFragment meinfragment = new MainFragment();    
    fragmentTransaction.replace(android.R.id.content, meinfragment);             
    fragmentTransaction.commit();


   Button btn = (Button) findViewById(R.id.leftButton);
   btn.setOnClickListener(new OnClickListener() {
       public void onClick(View v) {
           Intent intent = new Intent(MeinActivity.this, SearchActivity.class);
           startActivity(intent);

       }
       });



    }

}

这是我的logcat:

D / gralloc_goldfish(796):未检测到GPU仿真的仿真器.D / AndroidRuntime(923):关闭VMW / dalvikvm(923):threadid = 1:线程退出时未捕获异常(组= 0x41465700)致命异常:mainjava .lang.RuntimeException:无法启动活动ComponentInfo {bot / bot.MeinActivity}:java.lang.NullPointerExceptionat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2261)在Android.app.Handler.dispatchMessage(Handler.java:99)的android.app.ActivityThread.access $ 600(ActivityThread.java:141)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)在android.os.Looper.loop(Looper.java:137)的android.app.ActivityThread.main(ActivityThread.java:5103),位于java.lang.reflect的java.lang.reflect.Method.invokeNative(Native Method) .Method.invoke(Method.java:525)位于com.android.internal.os.Zygote的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)在dalvik.system.NativeStart.main(本地方法)的Init.main(ZygoteInit.java:553)引起:android.app.Activity.performCreate中的java.lang.NullPointerExceptionat bot.MeinActivity.onCreate(MeinActivity.java:49) (Activity.java:5133)android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1087)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

1 个答案:

答案 0 :(得分:0)

您未在活动的onCreate()中设置内容视图,因此无法找到您的按钮,因此btn为空。

super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);  // <-- add this line

如果您的按钮位于片段中,则应将OnClickListener的代码移动到片段类。