我正在制作一个包含片段的登录页面,但每当我运行应用程序时,我只会得到一个白色的碎片,没有编辑文本没有按钮。
LoginFragment
public class LoginFragment extends Fragment {
private View view;
private Button btcancel;
private EditText etpassword;
private Button btlogin;
private EditText etusername;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=inflater.inflate(R.layout.login_frag,container,false);
return view;
}
private void initialize() {
btcancel = (Button) getActivity().findViewById(R.id.bt_cancel);
etpassword = (EditText) getActivity().findViewById(R.id.et_password);
btlogin = (Button) getActivity().findViewById(R.id.bt_login);
etusername = (EditText) getActivity().findViewById(R.id.et_user_name);
}
}
LoginActivity
public class LoginActivity extends Activity {
private FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragmentSetUp();
}
private void fragmentSetUp() {
fragmentTransaction=getFragmentManager().beginTransaction();
LoginFragment loginFragment=new LoginFragment();
fragmentTransaction.add(loginFragment,"login").commit();
}
}
答案 0 :(得分:1)
您需要使用父布局来放置片段,但在您的情况下,您可以使用android的默认布局作为片段的父容器。
<强>溶液强>
fragmentTransaction=getFragmentManager().beginTransaction();
LoginFragment loginFragment=new LoginFragment();
fragmentTransaction.add(android.R.id.content,loginFragment,"login").commit();
答案 1 :(得分:0)
可能是因为setContentView
错过了activity
。在布局中,您应该声明一个容器,您可以在其中添加/替换Fragment
s。同样在LoginFragment中,您使用getActivity来检索Fragment的组件。您应该使用膨胀的视图。 imo的最佳方式是覆盖onCreatedView
答案 2 :(得分:0)
您也可以使用 -
fragmentTransaction=getFragmentManager().beginTransaction();
LoginFragment loginFragment=new LoginFragment();
fragmentTransaction.add(0,loginFragment,"login").commit();
片段交易 -
public abstract FragmentTransaction add(int containerViewId,Fragment 片段,字符串标记)
在API级别11中添加将片段添加到活动状态。这个 片段也可以选择其视图(如果是Fragment.onCreateView 将非空值返回到活动的容器视图中。
参数
containerViewId - 此片段所在容器的可选标识符 放入。如果为0,则不会放入容器中。
片段 - 要添加的片段。这个片段一定不能 被添加到活动中。
标记 - 片段的可选标记名称,以便稍后检索 片段与FragmentManager.findFragmentByTag(String)。
返回 - 返回相同的FragmentTransaction实例。