Java 使用片段设置onClickListener的正确方法

Java 使用片段设置onClickListener的正确方法,java,android,facebook,android-fragments,Java,Android,Facebook,Android Fragments,这是我第一次处理碎片。我正在实现facebook登录。当我为片段添加代码时 /* FACEBOOK FRAGMENT SETUP */ if (savedInstanceState == null) { // Add the fragment on initial activity setup mainFragment = new MainFragment();

这是我第一次处理碎片。我正在实现facebook登录。当我为片段添加代码时

            /* FACEBOOK FRAGMENT SETUP */
            if (savedInstanceState == null) {
                // Add the fragment on initial activity setup
                mainFragment = new MainFragment();
                getSupportFragmentManager()
                .beginTransaction()
                .add(android.R.id.content, mainFragment)
                .commit();
            } else {
                // Or set the fragment from restored state info
                mainFragment = (MainFragment) getSupportFragmentManager()
                .findFragmentById(android.R.id.content);
            }
然后,我的按钮或文本视图的onClickListener都无法工作。我不知道为什么会这样。有人能解释一下吗

主要活动代码

public class ActivityLogin extends FragmentActivity {
     // label to display gcm messages
    TextView lblMessage;

    // Asyntask
    AsyncTask<Void, Void, Void> mRegisterTask;




    private EditText edt_username, edt_password;
    public String gcm_id, un, pw, tab;
    public ProgressDialog pdialog;
    static int count = 0;
    public String gcm_regid;

    ConnectionDetector cd;
    AlertDialogManager alert = new AlertDialogManager();
    SharedPreferences sp1;
    GPSTracker gpstracker;


    RequestQueue queue;

    //FB FRAGMENT
    private MainFragment mainFragment;

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





        Intent in = getIntent();
        tab = in.getStringExtra("tab");
        queue = Volley.newRequestQueue(this);

        //Check for saved credentials.
        sp1=getSharedPreferences("Login",MODE_PRIVATE);
        un = sp1.getString("un", "");
        pw = sp1.getString("pw", "");

        // Make sure the device has the proper dependencies.
        GCMRegistrar.checkDevice(this);
        gpstracker = new GPSTracker(getApplicationContext());

        // Make sure the manifest was properly set - comment out this line
        // while developing the app, then uncomment it when it's ready.
        //GCMRegistrar.checkManifest(this);


        cd = new ConnectionDetector(getApplicationContext());

        //registerReceiver(mHandleMessageReceiver, new IntentFilter(DISPLAY_MESSAGE_ACTION));
        final String regId = GCMRegistrar.getRegistrationId(this);

        // Check if regid already presents
        if (regId.equals("")) {
            // Registration is not present, register now with GCM           
            GCMRegistrar.register(this, SENDER_ID);
            gcm_id=GCMRegistrar.getRegistrationId(this);
        } else {
            gcm_id=regId;
            // Device is already registered on GCM
            if (GCMRegistrar.isRegisteredOnServer(this)) {
                // Skips registration.              
                Toast.makeText(getApplicationContext(), "Already registered with GCM", Toast.LENGTH_LONG).show();
            }
        }


        /*if(un==""){*/
            setContentView(R.layout.login_layout);



            Button login = (Button) findViewById(R.id.btn_login);
            /* init EditText */
            edt_username = (EditText) findViewById(R.id.edt_userNameLogin);
            edt_password = (EditText) findViewById(R.id.edt_PasswordLogin);


            login.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (edt_username.getText().toString().equalsIgnoreCase("")) {

                        alert.showAlertDialog(ActivityLogin.this, "KpFun alert!",
                                "Username no empty!", false);
                        edt_username.requestFocus();
                        return;
                    }
                    if (edt_password.getText().toString().equalsIgnoreCase("")) {
                        alert.showAlertDialog(ActivityLogin.this, "KpFun alert!",
                                "Password no empty!", false);
                        edt_password.requestFocus();
                        return;
                    }
                    if (!cd.isConnectingToInternet()) {
                        alert.showAlertDialog(ActivityLogin.this, "KpFun alert!",
                                "No network, Please check your data connection!",
                                false);
                        return;
                    }

                    Login();

                }
            });

            TextView backLink = (TextView) findViewById(R.id.tv_Back);
            backLink.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent inRegister = new Intent(ActivityLogin.this,
                            SplashScreen.class);
                    startActivity(inRegister);
                    finish();

                }
            });


        /*}else{
            Login();

        }*/

             /* FACEBOOK FRAGMENT SETUP */
            if (savedInstanceState == null) {
                // Add the fragment on initial activity setup
                mainFragment = new MainFragment();
                getSupportFragmentManager()
                .beginTransaction()
                .add(android.R.id.content, mainFragment)
                .commit();
            } else {
                // Or set the fragment from restored state info
                mainFragment = (MainFragment) getSupportFragmentManager()
                .findFragmentById(android.R.id.content);
            }



            if(!un.equals("")){
                Login();
            }



    }
    /* MORE STUFF TAKEN OUT */

应该在登录活动中的所有*Create/Resume等方法上创建并调用UiLifecycleHelper,因为片段中的onActivityResult永远不会被调用


您应该只在片段代码中实现UIlogin btn等。在Activity.setContentView中,您应该在定义的登录片段中设置布局。

您是否尝试在主活动中导入正确的库

尝试导入:

import android.support.v4.app.FragmentActivity;

我没听懂。你能给我一个代码示例吗。我试图在片段代码中实现我的登录按钮,但它仍然没有响应。
import android.support.v4.app.FragmentActivity;