调用片段时仅显示白屏

时间:2014-07-04 07:50:22

标签: android android-fragments

我正在制作一个包含片段的登录页面,但每当我运行应用程序时,我只会得到一个白色的碎片,没有编辑文本没有按钮。

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();
    }
}

3 个答案:

答案 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实例。