Java I';我在设备上运行代码时遇到问题
这是我的问题。下面是我的类(Events.java),下面是错误。我继续在我的手机上运行我的代码,但继续得到那个错误。我不知道到底是什么问题,也不知道如何解决。我尝试了所有我查过的东西,但总是出错。请帮帮我,我显然是个笨蛋Java I';我在设备上运行代码时遇到问题,java,android,android-fragments,exception,android-fragmentactivity,Java,Android,Android Fragments,Exception,Android Fragmentactivity,这是我的问题。下面是我的类(Events.java),下面是错误。我继续在我的手机上运行我的代码,但继续得到那个错误。我不知道到底是什么问题,也不知道如何解决。我尝试了所有我查过的东西,但总是出错。请帮帮我,我显然是个笨蛋 package com.androidapp.restart; import android.app.Fragment; import android.app.LoaderManager; import android.app.ProgressDialog; import
package com.androidapp.restart;
import android.app.Fragment;
import android.app.LoaderManager;
import android.app.ProgressDialog;
import android.content.ContentUris;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.getbase.floatingactionbutton.FloatingActionButton;
/**
* Created by aa215995 on 3/2/2018.
*/
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);
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(view.getContext(), AddEvent.class);
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);
return eventListView;
}
@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);
}
}
这是xml文件(events.xml)
以下是Fragment.java的一节:
if (mFragmentManager != null) {
writer.print(prefix); writer.print("mFragmentManager=");
writer.println(mFragmentManager);
}
您正试图在listview上强制转换布局 将此@id添加到您的线性布局中,并在活动中进行充气
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@id/layout";
tools:context="com.delaroystudiuos.alarmreminder.MainActivity">
这是一个问题:
eventListView = (ListView) inflater.inflate(R.layout.nav_events, container, false);
您尝试对listview进行充气,但充气器返回所有视图的父视图的线性布局。您需要放大LinearLayout而不是listview,这将导致强制转换异常。如果您试图访问XML中现有的listview项:
<ListView
android:id="@+id/list"
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
当我这样做(R.id.nav_事件)时,我得到一个错误,这是因为您的xml中没有id,请尝试我的编辑,它应该可以解决您的问题。请查看上面的答案。您不能充气视图而不是布局。因此,inflagenr.id.nav_事件导致异常。因此,我给我的xml文件一个id,然后输入:LinearLayout ll=(LinearLayout)inflater.inflate(R.id.nav_事件,容器,false);是的,试试看,让我知道
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@id/layout";
tools:context="com.delaroystudiuos.alarmreminder.MainActivity">
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.layout, container, false);;
eventListView = (ListView) inflater.inflate(R.layout.nav_events, container, false);
<ListView
android:id="@+id/list"
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
View view = inflater.inflate(R.layout.nav_events, container, false);
eventListView = view.findViewById(R.id.list);