【问题标题】:I get this error when I run the app on my device [duplicate]当我在我的设备上运行应用程序时出现此错误 [重复]
【发布时间】:2018-05-24 17:37:12
【问题描述】:

我目前在设备上运行我的代码时遇到这些错误

FATAL EXCEPTION: main
Process: com.androidapp.restart, PID: 9401
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.ListView
    at com.androidapp.restart.Events.onCreateView(Events.java:46)
    at android.app.Fragment.performCreateView(Fragment.java:2508)
    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1279)
    at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2407)
    at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2186)
    at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2142)
    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2043)
    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:719)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

现在,根据我在此处看到的是错误中说明的代码库。请帮助我是初学者 事件.java

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 android.app.FragmentManager;

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

    }
}

Fragment Java(它说我在这里遇到错误:

 if (mFragmentManager != null) {
        writer.print(prefix); writer.print("mFragmentManager=");
        writer.println(mFragmentManager);
    }
    if (mHost != null) {
        writer.print(prefix); writer.print("mHost=");
        writer.println(mHost);
    }
    if (mParentFragment != null) {
        writer.print(prefix); writer.print("mParentFragment=");
        writer.println(mParentFragment);

总之,我正在尝试运行应用程序,但每次我进入某个部分时,在这种情况下,Events.java 是 nav_events.xml 布局,我不断收到错误,不知道如何修复它

【问题讨论】:

    标签: java android xml android-layout fragment


    【解决方案1】:

    您的错误位于您的 Events.java 文件的第 46 行。

    当它在你的 XML 文件中看起来是一个 LinearLayout 时,你正在膨胀一个视图并将其声明为 Java 中的 ListView(第 46 行)。

    在此之后,您正在使用 getView()。你只能在 onCreateView() 返回一个 View 后才能正确使用该函数,绝对不能在其中。

    评论后编辑: 您尚未返回视图,因为您无法在 return 语句之后执行任何代码。 现在没有你的布局文件我只能推测但可能会替换

    eventListView = (ListView) inflater.inflate(R.layout.nav_events, container, false);
    

    View rootView = (LinearLayout) inflater.inflate(R.layout.nav_events, container, false);
    

    然后用 rootView 替换该代码块中所有出现的 getView()。 最后

    return rootView;
    

    【讨论】:

    • 首先我该怎么办?我已经返回了视图
    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2014-12-24
    相关资源
    最近更新 更多