Как вы переводите это из AppCompatActivity в Fragment

В течение месяца я проводил много исследований, чтобы перевести это на фрагмент, так как он мне нужен для моего меню навигации. В основном я создаю приложение. Я использую свой MainActvity для запуска меню навигации с помощью фрагмента. Затем мне пришлось бы использовать классы и запускать их как фрагмент, но в какой-то момент мне пришлось использовать AppCompatActivity, поэтому я перевел его на фрагмент, но столкнулся с проблемой с намерением и другими переменными.

Вот MainActivity

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {




override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)


    val toggle = ActionBarDrawerToggle(
            this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
    drawer_layout.addDrawerListener(toggle)
    toggle.syncState()

    nav_view.setNavigationItemSelectedListener(this)
}

override fun onBackPressed() {
    if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
        drawer_layout.closeDrawer(GravityCompat.START)
    } else {
        super.onBackPressed()
    }
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the menu; this adds items to the action bar if it is present.
    menuInflater.inflate(R.menu.main, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    when (item.itemId) {
        R.id.action_refresh -> return true
        else -> return super.onOptionsItemSelected(item)
    }
}



override fun onNavigationItemSelected(item: MenuItem): Boolean {
    val fragmentManager = fragmentManager
    // Handle navigation view item clicks here.
    when (item.itemId) {
        R.id.content_main -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            , MainContent())
                    .commit()
            // Handle the camera action
        }
        R.id.nav_events -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Events())
                    .commit()

        }
        R.id.nav_map -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Map())
                    .commit()

        }
        R.id.nav_study -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Study())
                    .commit()

        }
        R.id.nav_avatar -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Avatar())
                    .commit()

        }
        R.id.nav_settings -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Settings())
                    .commit()

        }
        R.id.nav_faq -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,FAQ())
                    .commit()

        }
        R.id.nav_share -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,ShareCalendar())
                    .commit()

        }
        R.id.nav_send -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,SendEvent())
                    .commit()

        }
        R.id.nav_feedback -> {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            ,Feedback())
                    .commit()

        }
    }

    drawer_layout.closeDrawer(GravityCompat.START)
    return true
}

}

Вот класс событий

public class Events extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {

private FloatingActionButton mAddEventButton;
private Toolbar mToolbar;
EventCursorAdapter mCursorAdapter;
EventDbHelper eventDbHelper = new EventDbHelper(getActivity());
ListView eventListView;
ProgressDialog prgDialog;



private static final int VEHICLE_LOADER = 0;

@Nullable
@Override
public ListView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    eventListView = (ListView) inflater.inflate(R.layout.nav_events, container, false);
    return eventListView;

    mToolbar = (Toolbar) getView().findViewById(R.id.toolbar);
    ((AppCompatActivity)getActivity()).setSupportActionBar(mToolbar);
    mToolbar.setTitle("Events");

    eventListView = (ListView) getView().findViewById(R.id.list);
    View emptyView = getView().findViewById(R.id.empty_view);
    eventListView.setEmptyView(emptyView);

    mCursorAdapter = new EventCursorAdapter(getActivity(), null);
    eventListView.setAdapter(mCursorAdapter);

    eventListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

            Intent intent = new Intent(Events.this, AddEvent.class, null);


            Uri currentVehicleUri = ContentUris.withAppendedId(EventContract.EventEntry.CONTENT_URI, id);

            // Set the URI on the data field of the intent
            intent.setData(currentVehicleUri);

            startActivity(intent);

        }
    });


    mAddEventButton = (FloatingActionButton) getView().findViewById(R.id.fab);

    mAddEventButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(v.getContext(), AddEvent.class);
            startActivity(intent);
        }
    });

    getLoaderManager().initLoader(VEHICLE_LOADER, null, this);


}

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    String[] projection = {
            EventContract.EventEntry._ID,
            EventContract.EventEntry.KEY_TITLE,
            EventContract.EventEntry.KEY_DATE,
            EventContract.EventEntry.KEY_TIME,
            EventContract.EventEntry.KEY_REPEAT,
            EventContract.EventEntry.KEY_REPEAT_NO,
            EventContract.EventEntry.KEY_REPEAT_TYPE,
            EventContract.EventEntry.KEY_ACTIVE

    };

    return new CursorLoader(getActivity(),   // Parent activity context
            EventContract.EventEntry.CONTENT_URI,   // Provider content URI to query
            projection,             // Columns to include in the resulting Cursor
            null,                   // No selection clause
            null,                   // No selection arguments
            null);                  // Default sort order

}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    mCursorAdapter.swapCursor(cursor);

}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    mCursorAdapter.swapCursor(null);

}

}

Мне нужна помощь. Я только учусь программировать. Я получаю следующие ошибки:

Я убрал "null" из строки "Intent intent = new Intent (Events.this, AddEvent.class, null);" в классе Events и получил эту ошибку:

Error:(63, 33) error: no suitable constructor found for Intent(Events,Class<AddEvent>) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; Events cannot be converted to String) constructor Intent.Intent(Context,Class<?>) is not applicable (argument mismatch; Events cannot be converted to Context)

Какие ошибки вы получаете? Также в вашем MainActivity у вас нет точек с запятой ...

namokarm 18.05.2018 22:32

Ставлю отредактированный и внизу ставлю ошибку

DavidCoder 19.05.2018 00:08

Я убрал "null" из строки "Intent intent = new Intent (Events.this, AddEvent.class, null);" в классе событий и получил эту ошибку: Ошибка: (63, 33) ошибка: не найден подходящий конструктор для Intent (Events, Class <AddEvent>) конструктор Intent.Intent (String, Uri) не применим (несоответствие аргументов; события не могут быть преобразованным в String) конструктор Intent.Intent (Context, Class <?>) не применим (несоответствие аргументов; события не могут быть преобразованы в Context)

DavidCoder 19.05.2018 00:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
51
0

Другие вопросы по теме