намерение во фрагменте продолжает сбой проблемы с манифестом, Android Studio - PullRequest
0 голосов
/ 11 июня 2019

Я получаю сообщение об ошибке

android.content.ActivityNotFoundException: невозможно найти явный класс активности {com.example.tulio.appkolev / com.example.tulio.appkolev.fragments.registerFragment};Вы объявили об этой активности в своем AndroidManifest.xml?

После просмотра в Интернете и пробуя несколько страниц, я не смог найти решение

Основы, у меня есть этот макет для входав приложении в конце страницы у меня есть ссылка для создания учетной записи.При нажатии приложение вылетает и показывает эту ошибку

Я уверен, что код не соответствует стандартам

main

package com.example.tulio.appkolev;


public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener  {

private final AppCompatActivity activity = MainActivity.this;

    private DrawerLayout drawer;
    private InputValidation inputValidation;
    private DatabaseHelper databaseHelper;


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


        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);



        drawer = findViewById(R.id.drawer_layout);

        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar,
                R.string.navigation_drawer_close, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        if (savedInstanceState==null){
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new loginFragment()).commit();
        navigationView.setCheckedItem(R.id.account);

        }
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        switch (menuItem.getItemId()){
            case R.id.settings:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new settingsFragment()).commit();
                break;
            case R.id.account:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new loginFragment()).commit();
                break;
            case R.id.assignments:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new assigmentsFragment()).commit();
                break;
        }
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    @Override
    public void onBackPressed(){
        if (drawer.isDrawerOpen(GravityCompat.START)){
            drawer.closeDrawer(GravityCompat.START);
        }else
        {
            super.onBackPressed();
        }

    }

    private void initObjects(){
        databaseHelper = new DatabaseHelper(activity);
        inputValidation = new InputValidation(activity);
    }
    }

класс входа

package com.example.tulio.appkolev.fragments;


import com.example.tulio.appkolev.R;
import com.example.tulio.appkolev.helper.InputValidation;
import com.example.tulio.appkolev.sql.DatabaseHelper;


public class loginFragment extends Fragment implements View.OnClickListener {

    private final Fragment fragment = loginFragment.this;
    private NestedScrollView nestedScrollView;
    private TextInputLayout input_email;
    private TextInputLayout input_password;
    private TextInputEditText input_edit_email;
    private TextInputEditText input_edit_password;
    private AppCompatButton button_login;
    private AppCompatTextView registerLink;
    private InputValidation inputValidation;
    private DatabaseHelper databaseHelper;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_login, container, false);

      //   initObjects();

        button_login = (AppCompatButton) v.findViewById(R.id.button_login);
        button_login.setOnClickListener(this);
        registerLink = (AppCompatTextView) v.findViewById(R.id.registerLink);
        registerLink.setOnClickListener(this);
        nestedScrollView = (NestedScrollView) v.findViewById(R.id.nestedScrollView);
        input_email = (TextInputLayout)v.findViewById(R.id.input_email);
        input_password = (TextInputLayout)v.findViewById(R.id.input_password);
        input_edit_email = (TextInputEditText) v.findViewById(R.id.input_edit_email);
        input_edit_password = (TextInputEditText) v.findViewById(R.id.input_edit_password);

        button_login = (AppCompatButton) v.findViewById(R.id.button_login);
        registerLink = (AppCompatTextView) v.findViewById(R.id.registerLink);

        button_login.setOnClickListener(this);
        registerLink.setOnClickListener(this);

        return v;

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_login:
                verifyFromSQLite();
                break;
            case R.id.registerLink:
                Intent intentRegister = new Intent(getActivity().getApplicationContext(), registerFragment.class);
                startActivity(intentRegister);
                break;
        }

    }

  /*  private void initObjects(){
        databaseHelper = new DatabaseHelper(this);
        inputValidation = new InputValidation();
    }*/

        private void verifyFromSQLite(){
            if (!inputValidation.isInputEditTextFilled(input_edit_email, input_email, getString(R.string.error_message_email))) {
                return;
            }
            if (!inputValidation.isInputEditTextEmail(input_edit_email,  input_email, getString(R.string.error_message_email))) {
                return;
            }
            if (!inputValidation.isInputEditTextFilled(input_edit_password,  input_password, getString(R.string.error_message_email))) {
                return;
            }

            if (databaseHelper.checkUser(input_edit_email.getText().toString().trim()
                    , input_edit_password.getText().toString().trim())) {
                Intent accountsIntent = new Intent(getActivity().getApplication(), profileFragment.class);
                accountsIntent.putExtra("EMAIL", input_edit_email.getText().toString().trim());
                emptyInputEditText();
                startActivity(accountsIntent);
            } else {
               // Snackbar.make(nestedScrollView, getString(R.string.error_valid_email_password), Snackbar.LENGTH_LONG).show();
            }
        }


        private void emptyInputEditText(){
            input_edit_email.setText(null);
            input_edit_password.setText(null);
        }

    }

класс регистров

package com.example.tulio.appkolev.fragments;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.tulio.appkolev.R;

public class registerFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_register, container, false);
    }

}

манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tulio.appkolev">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Я хотел бы, чтобы при переходе меня в макет регистра.пожалуйста, дайте мне знать, что я могу улучшить

Ответы [ 2 ]

1 голос
/ 11 июня 2019
Intent intentRegister = new Intent(getActivity().getApplicationContext(),registerFragment.class);
startActivity(intentRegister);

registerFragment - это фрагмент, а не активность.Вы не можете начать это через startActivityВы можете изменить registerFragmentis расширяет активность и объявляет эту активность в AndroidManifest.xml

0 голосов
/ 11 июня 2019

Нижняя строка вызывает проблему.

Intent intentRegister = new Intent(getActivity().getApplicationContext(),registerFragment.class);
startActivity(intentRegister);

Намерение используется только для действий, когда вы вызываете фрагмент, используя это намерение, которое, очевидно, вызывает сбой.Поэтому вместо использования намерения вызывать фрагмент вы должны использовать для этого диспетчер фрагментов.

  getFragmentManager()
        .beginTransaction()
        .replace(R.id.fragment_container, new registerFragment())
        .commit();

Примечания. Рекомендуется использовать стандарт именования верблюдов для любого класса, который вы используете в проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...