Преобразование этого из AppCompatActivity во Fragment и наличие ошибок Intent и т. Д - PullRequest
0 голосов
/ 23 мая 2018

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

 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)

Вот код, который я кодировал:

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

}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Проблема вызвана этой строкой:
Intent intent = new Intent(Events.this, AddEvent.class, null);

Вам следует создать экземпляр намерения с помощью одного из доступных открытых конструкторов .
В этом случае япредложил бы использовать new Intent(view.getContext(), AddEvent.class);

0 голосов
/ 23 мая 2018

Исправьте просто, удалив ноль:

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