Android应用程序空指针无法启动活动组件信息

Android应用程序空指针无法启动活动组件信息,android,android-studio,nullpointerexception,android-fragmentactivity,Android,Android Studio,Nullpointerexception,Android Fragmentactivity,如果有人能帮上忙,那就太好了 我一直收到一个空指针错误,这很奇怪,因为应用程序在几分钟前工作正常,我看不出有什么问题,它在启动时崩溃了。如果您需要其他帮助,请告诉我,以下是所有详细信息: 日志: 04-08 23:31:27.579 5906-5906/com.yupo.dominic.yupo E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity Compo

如果有人能帮上忙,那就太好了

我一直收到一个空指针错误,这很奇怪,因为应用程序在几分钟前工作正常,我看不出有什么问题,它在启动时崩溃了。如果您需要其他帮助,请告诉我,以下是所有详细信息:

日志:

04-08 23:31:27.579    5906-5906/com.yupo.dominic.yupo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yupo.dominic.yupo/com.yupo.dominic.yupo.LectureLogged}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
        at com.yupo.dominic.yupo.MenuFragment1.onCreateView(MenuFragment1.java:49)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
        at android.app.Activity.performStart(Activity.java:5143)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
清单文件(如果有用):


MenuFragment1类:

package com.yupo.dominic.yupo;

import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseQueryAdapter;
import com.parse.ParseUser;

/**
 * Created by Dominic on 03/03/2015.
 */
public class MenuFragment1 extends Fragment implements View.OnClickListener{

    View rootview;
    Spinner uniSpinner;
    Button changeUniButton;
    String uniSpinnerText;
    ParseUser currentUser;
    ParseQueryAdapter<ParseObject> adapter;

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

        currentUser = ParseUser.getCurrentUser();

        if(currentUser.getString("type").equalsIgnoreCase("Lecturer"))
        {
            rootview = inflater.inflate(R.layout.menu1_lecture, container, false);

            TextView lectureUniTextView = (TextView) rootview.findViewById(R.id.lectureUniTextView);
            TextView lectureChangeUniTextView = (TextView) rootview.findViewById(R.id.lectureChangeUniTextView);
            uniSpinner = (Spinner) rootview.findViewById(R.id.uniSpinner);
            uniSpinnerSetup();
            changeUniButton = (Button) rootview.findViewById(R.id.changeUniButton);
            changeUniButton.setOnClickListener(this);

            if(currentUser.getString("university").equals(""))
            {
                lectureUniTextView.setText("You do not have a University set!");
                lectureChangeUniTextView.setText("Select a University");
                changeUniButton.setText("Set");

            }
            else
            {
                lectureUniTextView.setText("Your current University is: " + currentUser.getString("university"));
                lectureChangeUniTextView.setText("Change University to");
                changeUniButton.setText("Change");
            }
        }
        else
        {
            rootview = inflater.inflate(R.layout.menu1_student, container, false);

            TextView studentUniTextView = (TextView) rootview.findViewById(R.id.studentUniTextView);
            TextView studentChangeUniTextView = (TextView) rootview.findViewById(R.id.studentChangeUniTextView);
            uniSpinner = (Spinner) rootview.findViewById(R.id.uniSpinner);
            uniSpinnerSetup();
            changeUniButton = (Button) rootview.findViewById(R.id.changeUniButton);
            changeUniButton.setOnClickListener(this);

            if(currentUser.getString("university").equals(""))
            {
                studentUniTextView.setText("You do not have a University set!");
                studentChangeUniTextView.setText("Select a University");
                changeUniButton.setText("Set");

            }
            else
            {
                studentUniTextView.setText("Your current University is: " + currentUser.getString("university"));
                studentChangeUniTextView.setText("Change University to");
                changeUniButton.setText("Change");
            }
        }

        return rootview;
    }

    public void uniSpinnerSetup()
    {
        ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
            public ParseQuery create() {
                ParseQuery query = new ParseQuery("University");
                return query;
            }
        };

        adapter = new ParseQueryAdapter<ParseObject>(getActivity(), factory);
        adapter.setTextKey("name");
        uniSpinner.setAdapter(adapter);
        uniSpinner.setSelection(1);
        uniSpinner.setOnItemSelectedListener(new mySpinnerListener());
    }

    class mySpinnerListener implements Spinner.OnItemSelectedListener
    {
        @Override
        public void onItemSelected(AdapterView parent, View v, int position,long id) {

            ParseObject theSelectedObject = adapter.getItem(position);
            uniSpinnerText = theSelectedObject.get("name").toString();
        }

        @Override
        public void onNothingSelected(AdapterView parent) {
            // TODO Auto-generated method stub
            // Do nothing.
        }

    }

    @Override
    public void onClick(View v) {

        if(currentUser.getString("university").equals(uniSpinnerText))
        {
            Toast.makeText(getActivity(),"Your University is already set to that!", Toast.LENGTH_LONG).show();
        }
        else
        {
            currentUser.put("university", uniSpinnerText);
            currentUser.saveInBackground();
            Toast.makeText(getActivity(), "University changed to: " + uniSpinnerText, Toast.LENGTH_LONG).show();
        }
    }
}
package com.yupo.dominic.yupo;
导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.Button;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.parse.ParseObject;
导入com.parse.ParseQuery;
导入com.parse.ParseQueryAdapter;
导入com.parse.ParseUser;
/**
*由Dominic于2015年3月3日创建。
*/
公共类MenuFragment1扩展片段实现View.OnClickListener{
视图根视图;
纺纱机;
按钮转换按钮;
字符串单音文本;
ParseUser当前用户;
ParseQueryAdapter适配器;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
currentUser=ParseUser.getCurrentUser();
if(currentUser.getString(“type”).equalsIgnoreCase(“讲师”))
{
rootview=充气机。充气(R.layout.menu1_,容器,false);
TextView讲师NitextView=(TextView)rootview.findViewById(R.id.讲师NitextView);
TextView讲师更改单元ExtView=(TextView)rootview.findViewById(R.id.讲师更改单元ExtView);
uniSpinner=(微调器)rootview.findviewbyd(R.id.uniSpinner);
uniSpinnerSetup();
changeUniButton=(Button)rootview.findviewbyd(R.id.changeUniButton);
changeUniButton.setOnClickListener(此);
if(currentUser.getString(“大学”).equals(“”)
{
setText(“您没有大学套件!”);
讲师ChangeUnitExtView.setText(“选择一所大学”);
changeUniButton.setText(“Set”);
}
其他的
{
讲师NitextView.setText(“您当前的大学是:”+currentUser.getString(“大学”));
讲师更改UnitExtView.setText(“将大学更改为”);
changeUniButton.setText(“更改”);
}
}
其他的
{
rootview=充气机。充气(R.layout.menu1\u学生,容器,假);
TextView studentUniTextView=(TextView)rootview.findViewById(R.id.studentUniTextView);
TextView studentChangeUniTextView=(TextView)rootview.findViewById(R.id.studentChangeUniTextView);
uniSpinner=(微调器)rootview.findviewbyd(R.id.uniSpinner);
uniSpinnerSetup();
changeUniButton=(Button)rootview.findviewbyd(R.id.changeUniButton);
changeUniButton.setOnClickListener(此);
if(currentUser.getString(“大学”).equals(“”)
{
studentUniTextView.setText(“您没有大学设置!”);
studentchangeuntextview.setText(“选择一所大学”);
changeUniButton.setText(“Set”);
}
其他的
{
studentUniTextView.setText(“您当前的大学是:”+currentUser.getString(“大学”));
studentchangeuntextview.setText(“将大学更改为”);
changeUniButton.setText(“更改”);
}
}
返回rootview;
}
public void uniSpinnerSetup()
{
ParseQueryAdapter.QueryFactory=新建ParseQueryAdapter.QueryFactory(){
公共ParseQuery创建(){
ParseQuery=新的ParseQuery(“大学”);
返回查询;
}
};
适配器=新的ParseQueryAdapter(getActivity(),工厂);
adapter.setTextKey(“名称”);
uniSpinner.setAdapter(适配器);
单选(1);
setOnItemSelectedListener(新的mySpinnerListener());
}
类mySpinnerListener实现Spinner.OnItemSelectedListener
{
@凌驾
已选择公共位置(AdapterView父视图、视图v、整型位置、长id){
ParseObject theSelectedObject=adapter.getItem(位置);
uniSpinnerText=theSelectedObject.get(“name”).toString();
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
//什么也不做。
}
}
@凌驾
公共void onClick(视图v){
if(currentUser.getString(“university”).equals(uniSpinnerText))
{
Toast.makeText(getActivity(),“您的大学已经设置为该值!”,Toast.LENGTH\u LONG.show();
}
其他的
{
currentUser.put(“大学”,uniSpinnerText);
currentUser.savenbackground();
Toast.makeText(getActivity(),“University”更改为:“+uniSpinnerText,Toast.LENGTH\u LONG.show()”;
}
}
}
menu1_student.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/selectUniFrame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="Your Selected University: "
            android:id="@+id/studentUniTextView"/>

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/changeUni"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/selectUniFrame">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="Change University to"
            android:id="@+id/studentChangeUniTextView"
            android:layout_alignParentLeft="true"/>

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/uniSpinner"
            android:visibility="visible"
            android:layout_below="@+id/studentChangeUniTextView"
            android:spinnerMode="dropdown"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/changeUniButton"
            android:layout_toRightOf="@+id/uniSpinner"
            android:text="Change"/>

    </RelativeLayout>

</RelativeLayout>

menu1_touch.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/selectUniFrame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="Your Selected University: "
            android:id="@+id/lectureUniTextView"/>

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/changeUni"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/selectUniFrame">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="Change University to"
            android:id="@+id/lectureChangeUniTextView"
            android:layout_alignParentLeft="true"/>

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/uniSpinner"
            android:visibility="visible"
            android:layout_below="@+id/lectureChangeUniTextView"
            android:spinnerMode="dropdown"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/changeUniButton"
            android:layout_toRightOf="@+id/uniSpinner"
            android:text="Change"/>

    </RelativeLayout>

</RelativeLayout>

而不是

if(currentUser.getString("university").equals(""))
使用


您的
currentUser
对象中似乎没有
university
密钥

它可能在某一点上被填充,这就是它以前工作的原因

如果卸载/重新安装,则不会填充,
if(currentUser.getString("university").equals(""))
if(currentUser==null || currentUser.getString("university")==null || currentUser.getString("university").equals(""))