android 设备异常,尝试在android studio上运行设备时出现NullPointer异常

我是

android studio的新手.我在

Android studio上运行设备时遇到Nullpointer异常.我正在使用armeabi-v7a sdk作为手臂处理器.错误看起来像这样..

null

java.lang.NullPointerException

at com.android.tools.idea.run.AndroidSessionInfo.isEmbeddable(AndroidSessionInfo.java:62)

at com.android.tools.idea.run.AndroidRunConfigurationBase.getOldSessionTarget(AndroidRunConfigurationBase.java:307)

at com.android.tools.idea.run.AndroidRunConfigurationBase.getState(AndroidRunConfigurationBase.java:279)

at com.intellij.execution.runners.ExecutionEnvironment.getState(ExecutionEnvironment.java:201)

at com.intellij.execution.runners.BaseProgramRunner.execute(BaseProgramRunner.java:58)

at com.intellij.execution.runners.GenericProgramRunner.execute(GenericProgramRunner.java:31)

at com.intellij.execution.runners.BaseProgramRunner.execute(BaseProgramRunner.java:53)

at com.intellij.execution.runners.GenericProgramRunner.execute(GenericProgramRunner.java:31)

at com.intellij.execution.ProgramRunnerUtil.executeConfiguration(ProgramRunnerUtil.java:94)

at com.intellij.execution.impl.ExecutionManagerImpl.start(ExecutionManagerImpl.java:396)

at com.intellij.execution.impl.ExecutionManagerImpl.access$400(ExecutionManagerImpl.java:61)

at com.intellij.execution.impl.ExecutionManagerImpl$5.run(ExecutionManagerImpl.java:384)

at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)

at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)

at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)

at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)

at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

表现:

package="com.example.de34.myfirstapp">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".MainActivity"

android:label="@string/app_name"

android:theme="@style/AppTheme.NoActionBar">

我的gradle看起来像:

apply plugin: 'com.android.application'

android {

compileSdkVersion 23

buildToolsVersion "23.0.1"

defaultConfig {

applicationId "com.example.de34.myfirstapp"

minSdkVersion 15

targetSdkVersion 21

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(include: ['*.jar'], dir: 'libs')

//testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'com.android.support:design:23.1.1'

}

主要活动节点:

package com.example.de34.myfirstapp;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

public void OnclickMe(View view){

Toast toast=Toast.makeText(this,"oh you clicked",Toast.LENGTH_LONG);

toast.show();

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

XML:

xmlns:app="http://schemas.android.com/apk/res-auto"

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"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.de34.myfirstapp.MainActivity"

tools:showIn="@layout/activity_main">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!click me if you dare"

android:id="@+id/textView"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/clickMe"

android:id="@+id/button"

android:layout_marginTop="44dp"

android:layout_below="@+id/textView"

android:layout_centerHorizontal="true" />

### 解决方案 `java.lang.NullPointerException` 是 Java 中最常见的运行异常之一,通常发生在尝试调用一个未初始化或已被置为空的对象的方法或属性。以下是针对不同场景下 `NullPointerException` 的解决方案: #### 场景一:无具体错误信息的情况 当遇到 `java.lang.NullPointerException (no error message)` ,可以通过调试工具逐步排查问题所在[^1]。建议启用更详细的日志记录功能,或者通过断点调试定位具体的抛出位置。 #### 场景二:虚拟方法调用失败 如果错误提示为 `Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference`,则表明某个对象被设置为了 `null` 并试图调用了其方法[^2]。 解决办法如下: - 确认上下文中使用的 `Context` 对象是否已正确定义并赋值。 - 如果是在 Fragment 或 Activity 生命周期之外使用了 `Context`,需确保该对象仍然有效(例如,在异步线程中保存了一个已经销毁的 `Activity` 实例)。 #### 场景三:依赖库版本过高引发的问题 某些情况下,项目中的依赖库版本可能不兼容当前环境配置,从而导致崩溃。例如,引用[3]提到由于 `implementation 'androidx.appcompat:appcompat:1.7.0'` 版本过高而触发 NullPointerException。可以考虑降级至稳定版,比如改为 `implementation 'androidx.appcompat:appcompat:1.4.0'` 来解决问题[^3]。 #### 场景四:SharedPreferences 方法调用引起的 NullPointer 对于因 SharedPreferences 调用而导致的 NullPointerException,应仔细检查传入参数以及获取实例的方式是否存在问题[^4]。下面提供一段安全实现代码作为参考: ```java if(getActivity() != null){ SharedPreferences preferences = getActivity().getSharedPreferences("acupunctureConfig", Context.MODE_PRIVATE); } ``` 以上措施能够帮助开发者有效地处理大部分由 NullPointerException 所带来的困扰。 ### 注意事项 除了上述特定情况外,预防此类异常还需要养成良好的编程习惯,如对可选变量增加判空逻辑;合理管理生命周期内的资源释放等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值