Java 在片段中添加按钮

Java 在片段中添加按钮,java,android,fragment,Java,Android,Fragment,我有一个Java类,它用一些按钮表示一个通用的用户区域活动,我必须将这个按钮、文本ecc集成到一个选项卡式活动中。 这是泛型类 public class UserAreaActivity extends AppCompatActivity { private Button scan_btn; // User Session Manager Class UserSessionManager session; Context thisContext; // Button L

我有一个Java类,它用一些按钮表示一个通用的用户区域活动,我必须将这个按钮、文本ecc集成到一个选项卡式活动中。 这是泛型类

public class UserAreaActivity extends AppCompatActivity {
    private Button scan_btn;
    // User Session Manager Class
    UserSessionManager session;
Context thisContext;

// Button Logout
Button btnLogout;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_area);

    thisContext = getApplicationContext();

    // Session class instance
    session = new UserSessionManager(getApplicationContext());

    final EditText etUsername= (EditText) findViewById(R.id.etUsername);
    final TextView welcomeMessage=(TextView) findViewById(R.id.tvWelcomeMsg);

    // Button logout
    btnLogout = (Button) findViewById(R.id.btnLogout);

//        Toast.makeText(getApplicationContext(),
//                "User Login Status: " + session.isUserLoggedIn(),
//

    //get user data from session
    HashMap<String, String> user = session.getUserDetails();
    //get name
    String name = user.get(UserSessionManager.KEY_NAME);
    // get username
    String username = user.get(UserSessionManager.KEY_USERNAME);



    //Intent intent = getIntent();



    String message = name + " welcome to your user area!";
    welcomeMessage.setText(message);
    etUsername.setText(username);

    scan_btn=(Button) findViewById(R.id.scan_btn);
    final Activity activity = this;

    btnLogout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Clear the User session data
            // and redirect user to LoginActivity
            session.logoutUser();
        }
    });

    scan_btn.setOnClickListener
            (
                    new View.OnClickListener()
                    {
                        @Override
                        public void onClick(View view)
                        {
                            IntentIntegrator integrator = new IntentIntegrator(activity);
                            integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                            integrator.setPrompt("Scan");
                            integrator.setCameraId(0);
                            integrator.setBeepEnabled(false);
                            integrator.setBarcodeImageEnabled(false);
                            integrator.initiateScan();
                        }
                    }
            );
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null)
    {
        if(result.getContents()==null)
        {
            Toast.makeText(this,"Hai cancellato la scansione", Toast.LENGTH_LONG).show();
        }
        else
        {
            Toast.makeText(this, result.getContents(),Toast.LENGTH_LONG).show();
        }
    }
    else
    {
        super.onActivityResult(requestCode, resultCode, data);
    }

}

}

在这种情况下,您可以做的最好的事情是在片段中膨胀活动的布局,并手动将单击处理程序和其他代码移动到其中,同时注意
活动
片段
之间的生命周期差异:

public class Tab3Add extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_user_area, container, false);
    // Move your other code as well
    return rootView;
}

另外,如果在
R.layout.activity\u user\u区域中有任何
onClick
属性,您需要删除它们并以编程方式添加它们。

我不清楚您的问题。实际上,片段用于完成活动中托管的部分工作。您所需的任务代码将在片段上实现,该片段将添加到活动中。请注意,您不能同时继承两个类。不可能同时扩展活动和片段。但您可以将它们分开,但可以添加到活动中。片段部分将根据其在活动上的流执行
public class Tab3Add extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_user_area, container, false);
    // Move your other code as well
    return rootView;
}