我在使用Android / Java时还很新,所以请多多包涵。

我将代码从LoginActivity > onCreate移到我创建FragmentLogin的片段中,并将其移至方法onCreate中,其中不再解析许多类,例如findViewById。我假设某个地方我没有正确传递容器Activity的上下文。

或其他一些新手错误...

这是LoginActivity.java [复制了相关部分]

public class LoginActivity extends FragmentActivity {

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

        // Initialize Fragments //
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        setContentView(R.layout.fragment_login);
    }
}


和FragmentLogin.java:

public class FragmentLogin extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_login, container, false);

        final ValidationManager Check = new ValidationManager();
        final SessionManager Session = new SessionManager(this);

        final EditText textEmail = (EditText) findViewById(R.id.login_email);
        final EditText textPassword = (EditText) findViewById(R.id.login_pass);
        final Button buttonLogIn = (Button) findViewById(R.id.button_login);
        final Button buttonSignup = (Button) findViewById(R.id.button_signup);

        // Listen for FORGOTTEN PASSWORD click event, open ForgottenPassword Fragment //
        final Button forgottenPassword = (Button) findViewById(R.id.button_lost_pass);
        forgottenPassword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.fragment_forgotten_password);
            }
        });

    ... more code ...

    }
}


当第二个代码块驻留在Activity的onCreate方法中时起作用的变量/方法,但是在我将代码移到onCreateView片段类的FragmentLogin之后不再解析:

findViewByIdsetContentView

基本上,这是一个登录表单,其中默认片段应为login,并且该页面上的按钮(Button forgottenPassword)将打开另一个片段(FragmentForgottenPassword)。

谁能告诉我我在做什么错?

最佳答案

在您的活动布局xml文件中,添加类似以下内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="your.package.FragmentLogin"
              android:id="@+id/fragment_login"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>


在您的LoginActivity中:删除片段管理器中的内容。您还不需要它。

public class LoginActivity extends FragmentActivity {

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

        setContentView(R.layout.fragment_login);
    }
}


在您的FragmentLogin中,将return语句移到末尾,然后使用展开视图通过id查找您的视图:

public class FragmentLogin extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final view view = inflater.inflate(R.layout.fragment_login, container, false);

        final ValidationManager Check = new ValidationManager();
        final SessionManager Session = new SessionManager(this);

        final EditText textEmail = (EditText) view.findViewById(R.id.login_email);
        final EditText textPassword = (EditText) view.findViewById(R.id.login_pass);
        final Button buttonLogIn = (Button) view.findViewById(R.id.button_login);
        final Button buttonSignup = (Button) view.findViewById(R.id.button_signup);

        // Listen for FORGOTTEN PASSWORD click event, open ForgottenPassword Fragment //
        final Button forgottenPassword = (Button) view.findViewById(R.id.button_lost_pass);
        forgottenPassword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.fragment_forgotten_password);
            }
        });

    ... more code ...

        return view;

    }
}

关于java - 从“Activity ”移到“fragment ”的代码中的引用不再解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37161684/

10-12 06:22