如果您对java.lang.NullPointerException:未设置FileItemFactory和未设置为对象的实例感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解java.lang.
如果您对java.lang.NullPointerException:未设置FileItemFactory和未设置为对象的实例感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解java.lang.NullPointerException:未设置FileItemFactory的各种细节,并对未设置为对象的实例进行深入的分析,此外还有关于activity_main.xml: java.lang.NullPointerException、Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、android – Facebook onCompleted电子邮件java.lang.NullPointerException、android – java.lang.NullPointerException at GoogleApiActivity的实用技巧。
本文目录一览:- java.lang.NullPointerException:未设置FileItemFactory(未设置为对象的实例)
- activity_main.xml: java.lang.NullPointerException
- Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
- android – Facebook onCompleted电子邮件java.lang.NullPointerException
- android – java.lang.NullPointerException at GoogleApiActivity
java.lang.NullPointerException:未设置FileItemFactory(未设置为对象的实例)
尝试使用流API实施fileUpload时,出现以下错误:当我从流API网页上收集到“传统FileItemFactory被完全忽略”时,我想知道自己在做错什么。因此,我定义了一种基本方法,如下所示:
/** * * @param * @return */public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { // Check that we have a file upload request boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { ServletFileUpload upload = new ServletFileUpload(); // Create a new file upload handler // Parse the request try {Line 39 --> List items = upload.parseRequest(request); // FileItem Iterator iter = items.iterator(); while (iter.hasNext()) { FileItemStream item = (FileItemStream) iter.next(); if (!item.isFormField()) { this.processFITSFile(item); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
但这导致以下错误:
SEVERE: Servlet.service() for servlet FitsFileProcessorServlet threw exceptionjava.lang.NullPointerException: No FileItemFactory has been set. at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:353) at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) at controller.FITSFileProcessor.doPost(FITSFileProcessor.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Unknown Source)
答案1
小编典典new ServletFileUpload()
创建一个未初始化的实例。它的文档说:
构造此类的未初始化实例。在尝试解析请求之前,必须使用setFileItemFactory()配置工厂。
因此,您需要使用setFileItemFactory()
或使用其他构造函数,该构造函数将工厂作为参数。像这样:
// Create a factory for disk-based file itemsFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);
有关更多信息,请参见文档。这个例子也是从那里开始的。
或者,您可以使用流API,但随后需要以不同的方式获取迭代器:
ServletFileUpload upload = new ServletFileUpload();FileItemIterator iter = upload.getItemIterator(request);while (iter.hasNext()) { FileItemStream item = iter.next(); ...}
activity_main.xml: java.lang.NullPointerException
1、错误描述
eclipse.buildId=4.4.0.I20140606-1215 java.version=1.7.0_67 java.vendor=Oracle Corporation BootLoader constants: OS=win32,ARCH=x86_64,WS=win32,NL=zh_CN Framework arguments: -product org.eclipse.epp.package.jee.product Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product com.android.ide.eclipse.adt Error Fri Jun 05 23:50:22 CST 2015 activity_main.xml: java.lang.NullPointerException java.lang.NullPointerException at android.support.v7.internal.widget.ActionBarOverlayLayout.getDecorToolbar(ActionBarOverlayLayout.java:599) at android.support.v7.internal.widget.ActionBarOverlayLayout.pullChildren(ActionBarOverlayLayout.java:588) at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:359) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at android.widget.LinearLayout.measureVertical(LinearLayout.java:875) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:640) at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:540) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:323) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:349) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:519) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1066) at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:686) at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360) at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1101) at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:607) at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.selectDefaultPage(AndroidXmlEditor.java:450) at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:311) at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285) at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:362) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:140) at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:99) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:321) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:888) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:869) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:120) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:337) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:258) at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55) at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:127) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:983) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:766) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:737) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:731) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:715) at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1251) at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:66) at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187) at org.eclipse.ui.internal.Uisynchronizer.syncExec(Uisynchronizer.java:156) at org.eclipse.swt.widgets.display.syncExec(display.java:4734) at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:218) at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36) at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) at org.eclipse.e4.ui.services.internal.events.Eventbroker.send(Eventbroker.java:81) at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59) at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171) at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:488) at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:454) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:692) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:385) at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1126) at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3182) at org.eclipse.ui.internal.WorkbenchPage.access$23(WorkbenchPage.java:3104) at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:3086) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3081) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3045) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3035) at org.eclipse.ui.ide.IDE.openEditor(IDE.java:541) at org.eclipse.ui.ide.IDE.openEditor(IDE.java:500) at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:360) at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:167) at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:268) at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:233) at org.eclipse.jdt.ui.actions.SelectiondispatchAction.dispatchRun(SelectiondispatchAction.java:275) at org.eclipse.jdt.ui.actions.SelectiondispatchAction.run(SelectiondispatchAction.java:251) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:538) at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48) at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:853) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:178) at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:850) at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1142) at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1249) at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:278) at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:272) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:313) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.display.sendEvent(display.java:4353) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) at org.eclipse.swt.widgets.display.runDeferredEvents(display.java:4172) at org.eclipse.swt.widgets.display.readAnddispatch(display.java:3761) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
2、错误原因
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.helloworld.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
3、解决办法
Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
出于某种原因,每次尝试启动我的应用程序时,我都会出现以下错误:
Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}:java.lang.NullPointerException
我检查了清单文件,并添加了所有活动.
我启动应用程序时使用的唯一方法是:
private void logIn(){
Button logIn = (Button) findViewById(R.id.login);
logIn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Todo Auto-generated method stub
Intent loginIntent = new Intent(MainActivity.this, HomeActivity.class);
loginIntent.putExtra("cmUN", cmUN);
loginIntent.putExtra("cmPW", cmPW);
startActivity(loginIntent);
}
});
}
这是onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
logIn();
}
完整日志:
Ë
/AndroidRuntime(1607): FATAL EXCEPTION: main
E/AndroidRuntime(1607): Process: com.example.lifeahead, PID: 1607
E/AndroidRuntime(1607): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2121)
E/AndroidRuntime(1607): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(1607): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(1607): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(1607): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1607): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1607): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1607): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1607): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.Activity.findViewById(Activity.java:1884)
E/AndroidRuntime(1607): at com.example.lifeahead.MainActivity.<init>(MainActivity.java:22)
E/AndroidRuntime(1607): at java.lang.class.newInstanceImpl(Native Method)
E/AndroidRuntime(1607): at java.lang.class.newInstance(Class.java:1208)
E/AndroidRuntime(1607): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2112)
E/AndroidRuntime(1607): ... 11 more
我感谢所有帮助!
解决方法:
stacktrace告诉你
Button logIn = (Button) findViewById(R.id.login);
findViewById返回的对象为null,因为您拥有的唯一方法是logIn(). findViewById返回null的唯一原因是因为您正在查找不属于当前活动的视图层次结构的视图
android – Facebook onCompleted电子邮件java.lang.NullPointerException
我该怎么办?
任何一种帮助将不胜感激.
早些时候,我使用这个来源获取Facebook用户的详细信息,并且没有任何麻烦地获取数据(包括电子邮件):
public class MainActivity extends Activity { private Session.StatusCallback sessionStatusCallback; private Session currentSession; private Button login; private Button logout; private Button publishButton; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); // create instace for sessionStatusCallback sessionStatusCallback = new Session.StatusCallback() { @Override public void call(Session session,SessionState state,Exception exception) { onSessionStateChange(session,state,exception); } }; login = (Button) findViewById(R.id.loginButton); login.setonClickListener(new OnClickListener() { @Override public void onClick(View v) { connectToFB(); } }); logout = (Button) findViewById(R.id.logoutButton); logout.setonClickListener(new OnClickListener() { @Override public void onClick(View v) { if (currentSession != null) { currentSession.closeAndClearTokeninformation(); ... } } }); // publish button publishButton = (Button) findViewById(R.id.publishButton); publishButton.setonClickListener(new OnClickListener() { @Override public void onClick(View v) { publishStory(); } }); } public void connectToFB() { List<String> permissions = new ArrayList<String>(); permissions.add("publish_actions"); currentSession = new Session.Builder(this).build(); currentSession.addCallback(sessionStatusCallback); Session.OpenRequest openRequest = new Session.OpenRequest( MainActivity.this); openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); openRequest.setRequestCode(Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE); openRequest.setPermissions(permissions); currentSession.openForPublish(openRequest); } @Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); if (currentSession != null) { currentSession .onActivityResult(this,requestCode,data); } } private void onSessionStateChange(Session session,Exception exception) { if (session != currentSession) { return; } if (state.isOpened()) { // Log in just happened. Toast.makeText(getApplicationContext(),"session opened",Toast.LENGTH_SHORT).show(); Request.executeMeRequestAsync(session,new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user,Response response) { String fbId = user.getId(); String fbName = user.getName(); String gender = user.asMap().get("gender").toString(); String email = user.asMap().get("email").toString(); String first = user.asMap().get("first_name").toString(); String last = user.asMap().get("last_name").toString(); textView.setText("Id: " + fbId + ",Name: " + fbName + ",Gender: " + gender + ",EmailID: " + email + ",First: " + first + ",Last: " + last); } }); } else if (state.isClosed()) { // Log out just happened. Update the UI. Toast.makeText(getApplicationContext(),"session closed",Toast.LENGTH_SHORT).show(); } } public void publishStory() { .... } }
现在我在我的一个项目中使用相同的代码,但总是得到:
E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at c.o.m.MainActivity$5.onCompleted(MainActivity.java:262) at com.facebook.Request$1.onCompleted(Request.java:303) at com.facebook.Request$4.run(Request.java:1726) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4921) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511)
在这条线上,我得到了NPE:
String email = user.asMap().get("email").toString();
码:
public class MainActivity extends Activity { Button btnFBLogin,btnGPLogin; private Session.StatusCallback sessionStatusCallback; private Session currentSession; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen_layout); sessionStatusCallback = new Session.StatusCallback() { @Override public void call(Session session,exception); } }; btnFBLogin = (Button) findViewById(R.id.loginFB); btnFBLogin.setonClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // Todo Auto-generated method stub connectToFB(); } }); } public void connectToFB() { List<String> permissions = new ArrayList<String>(); permissions.add("publish_actions"); currentSession = new Session.Builder(this).build(); currentSession.addCallback(sessionStatusCallback); Session.OpenRequest openRequest = new Session.OpenRequest( MainActivity.this); openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); openRequest.setRequestCode(Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE); openRequest.setPermissions(permissions); currentSession.openForPublish(openRequest); } @Override public void onActivityResult(int requestCode,Response response) { String fbId = user.getId(); String fbName = user.getName(); String gender = user.asMap().get("gender").toString(); String email = user.asMap().get("email").toString(); String first = user.asMap().get("first_name").toString(); String last = user.asMap().get("last_name").toString(); Toast.makeText(MainActivity.this,"EmailId:- "+email,Toast.LENGTH_LONG).show(); } }); } else if (state.isClosed()) { // Log out just happened. Update the UI. Toast.makeText(getApplicationContext(),Toast.LENGTH_SHORT).show(); } } }
可能是什么原因?为什么它的发生?
解决方法
所以你应该在使用电子邮件变量后从登录中检查它是否为null请检查如:
String email =""; if(user.asMap().get("email") != null){ email = user.asMap().get("email").toString(); }
android – java.lang.NullPointerException at GoogleApiActivity
我在这里放了一些堆栈跟踪:
Fatal Exception: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,request=1,result=0,data=null} to activity {me.robano.android/com.google.android.gms.common.api.GoogleApiActivity}: java.lang.NullPointerException at android.app.ActivityThread.deliverResults(ActivityThread.java:3641) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3684) at android.app.ActivityThread.access$1300(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(NativeStart.java) Caused by java.lang.NullPointerException at com.google.android.gms.common.api.GoogleApiActivity.zza(UnkNown Source) at com.google.android.gms.common.api.GoogleApiActivity.onActivityResult(UnkNown Source) at android.app.Activity.dispatchActivityResult(Activity.java:5634) at android.app.ActivityThread.deliverResults(ActivityThread.java:3637) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3684) at android.app.ActivityThread.access$1300(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(NativeStart.java)
我也在我的应用程序中使用Google firebase.
请帮忙!
谢谢
解决方法
可能是解决这个问题的唯一方法:
PackageManager pm = getPackageManager(); pm.setComponentEnabledSetting(new ComponentName(this,GoogleApiActivity.class),PackageManager.COMPONENT_ENABLED_STATE_disABLED,PackageManager.DONT_KILL_APP);
我们今天的关于java.lang.NullPointerException:未设置FileItemFactory和未设置为对象的实例的分享已经告一段落,感谢您的关注,如果您想了解更多关于activity_main.xml: java.lang.NullPointerException、Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、android – Facebook onCompleted电子邮件java.lang.NullPointerException、android – java.lang.NullPointerException at GoogleApiActivity的相关信息,请在本站查询。
本文标签: