想了解java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于在java中,尝试对null对象操作时,会产
想了解java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于在java中,尝试对null对象操作时,会产生的相关问题,此外,我们还将为您介绍关于Android sdk:java.lang.NullPointerException:尝试调用虚方法、Android Studio:尝试在空对象引用上调用虚拟方法“void android.widget.ImageButton.setImageResource(int)”、android – java.lang.NullPointerException:尝试在空对象引用上调用虚方法’java.io.File com.parse.ParsePlugins.getParseDir()’、android – 尝试在空对象引用上调用虚方法’int java.lang.Object.hashCode()’的新知识。
本文目录一览:- java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法(在java中,尝试对null对象操作时,会产生)
- Android sdk:java.lang.NullPointerException:尝试调用虚方法
- Android Studio:尝试在空对象引用上调用虚拟方法“void android.widget.ImageButton.setImageResource(int)”
- android – java.lang.NullPointerException:尝试在空对象引用上调用虚方法’java.io.File com.parse.ParsePlugins.getParseDir()’
- android – 尝试在空对象引用上调用虚方法’int java.lang.Object.hashCode()’
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法(在java中,尝试对null对象操作时,会产生)
我正在尝试将播放器的名称保存为共享的首选项,并通过再次以共享的首选项获取它的名称来使其显示在另一个活动中,但是我的应用程序崩溃了。
致命异常:主要
Process: plp.cs4b.thesis.drawitapp, PID: 1970 java.lang.RuntimeException: Unable to start activity ComponentInfo{plp.cs4b.thesis.drawitapp/plp.cs4b.thesis.drawitapp.PlayGame}: java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()'' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()'' on a null object reference at plp.cs4b.thesis.drawitapp.PlayGame.onCreate(PlayGame.java:20) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) ... 10 more
代码:
播放器
public class Player {private Context context;private SharedPreferences prefSettingsU;private SharedPreferences.Editor prefEditorU;private static final int PREFERENCE_MODE_PRIVATE = 0;private static final String MY_UNIQUE_PREF_FILE = "DrawItApp";public Player(Context context, String name) { this.context = context; saveName(name);}public void saveName(String n) { prefSettingsU = context.getSharedPreferences(MY_UNIQUE_PREF_FILE, PREFERENCE_MODE_PRIVATE); prefEditorU = prefSettingsU.edit(); prefEditorU.putString("keyName", n); prefEditorU.commit();}public String getName(Context ctx) { prefSettingsU = ctx.getSharedPreferences(MY_UNIQUE_PREF_FILE, PREFERENCE_MODE_PRIVATE); String name = prefSettingsU.getString("keyName", "ANONYMOUS"); return name;}
PlayGame.java
public class PlayGame extends Activity {private TextView welcomePlayer;private ListView createdGames;private Player mPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.play_game); welcomePlayer = (TextView) findViewById (R.id.tvPlayerName); welcomePlayer.setText("Welcome Back, " + String.valueOf(mPlayer.getName(this)) + " !"); createdGames = (ListView) findViewById (R.id.listCreatedGames); // adapter etc createdGames.setEmptyView(findViewById (R.id.tvNoGames));}
PlayerName.java
public class PlayerName extends Activity {private EditText playerName;private Player mPlayer;public static Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player_name); context = this; playerName = (EditText) findViewById (R.id.etName);}public void onC_Confirm(View btnclick) { mPlayer = new Player(context, String.valueOf(playerName.getText())); //mPlayer.saveName(); Intent intent = new Intent(PlayerName.this, PlayGame.class); startActivity(intent);}public void onC_testShPref(View btnclick) { Intent intent = new Intent(PlayerName.this, PlayGame.class); startActivity(intent);}
答案1
小编典典您的应用在以下位置崩溃:
welcomePlayer.setText("Welcome Back, " + String.valueOf(mPlayer.getName(this)) + " !");
因为mPlayer=null
。
您忘记Player mPlayer
在PlayGame活动中进行初始化。
mPlayer = new Player(context,"");
Android sdk:java.lang.NullPointerException:尝试调用虚方法
07-05 22:45:02.550 2821-2821/davvarn.csgo_maps E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: davvarn.csgo_maps,PID: 2821 java.lang.RuntimeException: Unable to start activity ComponentInfo{davvarn.csgo_maps/davvarn.csgo_maps.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setimageDrawable(android.graphics.drawable.Drawable)' on a null object reference at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2356) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2418) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setimageDrawable(android.graphics.drawable.Drawable)' on a null object reference at davvarn.csgo_maps.MainActivity.changeContent(MainActivity.java:176) at davvarn.csgo_maps.MainActivity.onCreate(MainActivity.java:115) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2309) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2418) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
我真的不知道如何粘贴MainActivity文件,因为我是Stackoverflow的新手.请让我知道如何,我会尝试.
解决方法
ImageView imageView =(ImageView)findViewById(R.id.yourImageViewIDHere);
在onCreate调用setContentView之后,请执行此操作.
Android Studio:尝试在空对象引用上调用虚拟方法“void android.widget.ImageButton.setImageResource(int)”
您的 post_item.xml 文件是否附加到 Recycler 视图?如果是,则必须使用点击侦听器。
,只需从 recyclerAdapter.java
android – java.lang.NullPointerException:尝试在空对象引用上调用虚方法’java.io.File com.parse.ParsePlugins.getParseDir()’
这是代码:
ListView listview; List<ParSEObject> ob; ProgressDialog mProgressDialog; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_big_board); new RemoteDataTask().execute(); } private class RemoteDataTask extends AsyncTask<Void,Void,Void> { @Override protected void onPreExecute() { super.onPreExecute(); mProgressDialog = new ProgressDialog(BigBoard.this); mProgressDialog.setTitle("Parse.com Simple ListView Tutorial"); mProgressDialog.setMessage("Loading..."); mProgressDialog.setIndeterminate(false); mProgressDialog.show(); } @Override protected Void doInBackground(Void... params) { // Locate the class table named "Country" in Parse.com ParseQuery<ParSEObject> query = new ParseQuery<ParSEObject>( "Country"); query.orderByDescending("_created_at"); try { ob = query.find(); } catch (ParseException e) { Log.e("Error",e.getMessage()); e.printstacktrace(); } return null; } @Override protected void onPostExecute(Void result) { // Locate the listview in listview_main.xml listview = (ListView) findViewById(R.id.listview); // Pass the results into an ArrayAdapter adapter = new ArrayAdapter<String>(BigBoard.this,R.layout.listview_item); // Retrieve object "name" from Parse.com database for (ParSEObject country : ob) { adapter.add((String) country.get("Name")); } // Binds the Adapter to the ListView listview.setAdapter(adapter); // Close the progressdialog mProgressDialog.dismiss(); // Capture button clicks on ListView items listview.setonItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent,View view,int position,long id) { // Send single item click data to SingleItemView Class Intent i = new Intent(BigBoard.this,SingleItemView.class); // Pass data "name" followed by the position i.putExtra("name",ob.get(position).getString("name") .toString()); // Open SingleItemView.java Activity startActivity(i); } }); } }
这就是我在logcat中获得的:
> 10-22 20:40:18.705 12588-12872/obx.com.futurister E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #3 Process: obx.com.futurister,PID: 12588 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:309) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference at com.parse.Parse.getParseDir(Parse.java:315) at com.parse.ParseCorePlugins.getCurrentUserController(ParseCorePlugins.java:129) at com.parse.ParseUser.getCurrentUserController(ParseUser.java:55) at com.parse.ParseUser.getCurrentUserAsync(ParseUser.java:888) at com.parse.ParseQuery.getUserAsync(ParseQuery.java:938) at com.parse.ParseQuery$3.call(ParseQuery.java:1196) at com.parse.ParseQuery$3.call(ParseQuery.java:1193) at com.parse.ParseQuery.doWithRunningCheck(ParseQuery.java:1132) at com.parse.ParseQuery.findAsync(ParseQuery.java:1193) at com.parse.ParseQuery.findInBackground(ParseQuery.java:1161) at com.parse.ParseQuery.find(ParseQuery.java:981) at obx.com.futurister.BigBoard$RemoteDataTask.doInBackground(BigBoard.java:66) at obx.com.futurister.BigBoard$RemoteDataTask.doInBackground(BigBoard.java:44) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) 10-22 20:40:18.857 12588-12619/obx.com.futurister E/Surface﹕ getSlotFromBufferLocked: unkNown buffer: 0xb3a1fb90 10-22 20:40:18.955 12588-12619/obx.com.futurister E/Surface﹕ getSlotFromBufferLocked: unkNown buffer: 0xa96acbb0 10-22 20:40:18.996 12588-12588/obx.com.futurister E/WindowManager﹕ android.view.WindowLeaked: Activity obx.com.futurister.BigBoard has leaked window com.android.internal.policy.PhoneWindow$DecorView{a0f50b2 V.E...... R......D 0,0-1026,538} that was originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:368) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:299) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) at android.app.Dialog.show(Dialog.java:319) at obx.com.futurister.BigBoard$RemoteDataTask.onPreExecute(BigBoard.java:56) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:604) at android.os.AsyncTask.execute(AsyncTask.java:551) at obx.com.futurister.BigBoard.onCreate(BigBoard.java:40) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
用doInBackground()方法猜测它的问题?我错过了什么吗?请帮忙,谢谢
解决方法
http://docs.parseplatform.org/android/guide/#local-datastore
public class App extends Application { @Override public void onCreate() { super.onCreate(); // Enable Local Datastore. Parse.enableLocalDatastore(this); // Register any ParSEObject subclass. Must be done before calling Parse.initialize() ParSEObject.registerSubclass(YourClass.class); Parse.initialize(this,"APPLICATION_ID","CLIENT_KEY"); } }
确保将App类添加到清单中
android – 尝试在空对象引用上调用虚方法’int java.lang.Object.hashCode()’
错误:
FATAL EXCEPTION: AsyncTask #4 Process:,PID: 4633 java.lang.NullPointerException: Attempt to invoke virtual method ''int java.lang.Object.hashCode()'' on a null object reference at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746) at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:774) at com.facebook.internal.Utility.queryAppSettings(Utility.java:825) at com.facebook.login.widget.LoginButton$1.run(LoginButton.java:489) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) com.android.vlada.sportisa E/GoogleApiAvailability: Google Play services is invalid. Cannot recover.
码:
public class MainActivity extends AppCompatActivity implements Googleapiclient.OnConnectionFailedListener { private Button buttonRegistrujSe,buttonPrijaviSeKaoGost,buttonPrijavaRegistrovaniKorisnik; private LoginButton loginButton; private CallbackManager callbackManager; private TextView info; @Override protected void onCreate(Bundle savedInstanceState) { FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FacebookSdk.sdkInitialize(getApplicationContext()); GoogleSignInoptions gso = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN) .requestemail() .build(); Googleapiclient mGoogleapiclient; mGoogleapiclient = new Googleapiclient.Builder(this) .enableAutoManage(this /* FragmentActivity */,this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API,gso) .build(); buttonRegistrujSe = (Button) (findViewById(R.id.button_registruj_se)); buttonRegistrujSe.setonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,RegistrationActivity.class); startActivity(i); } }); buttonPrijaviSeKaoGost = (Button) (findViewById(R.id.button_prijavi_se_kao_gost)); buttonPrijaviSeKaoGost.setonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i2 = new Intent(MainActivity.this,LoginGostActivity.class); startActivity(i2); } }); buttonPrijavaRegistrovaniKorisnik = (Button) (findViewById(R.id.button_prijava_registrovani_korisnik)); buttonPrijavaRegistrovaniKorisnik.setonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i3 = new Intent(MainActivity.this,LoginActivity.class); startActivity(i3); } }); callbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_main); info = (TextView)findViewById(R.id.info); loginButton = (LoginButton)findViewById(R.id.connectWithFbButton); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { info.setText( "User ID: " + loginResult.getAccesstoken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccesstoken().getToken() ); } @Override public void onCancel() { info.setText("Login attempt canceled."); } @Override public void onError(FacebookException e) { info.setText("Login attempt Failed."); } }); } @Override protected void onActivityResult(int requestCode,int resultCode,Intent data) { callbackManager.onActivityResult(requestCode,resultCode,data); } @Override protected void onDestroy() { super.onDestroy(); System.exit(0); } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { } }
布局代码
<com.facebook.login.widget.LoginButton android:id="@+id/connectWithFbButton"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_above="@+id/sign_in_button" android:layout_centerHorizontal="true" android:layout_marginBottom="43dp" />
更新:在我删除MainActivity中的重复代码后,我仍然在尝试运行应用程序时收到相同的错误.我也按照要求附加了Manifest代码,所以这可能有帮助吗?感谢名单
<?xml version="1.0" encoding="utf-8"?>
<!-- To auto-complete the email text field in the login form with the user''s emails --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.INTERNET" /> <permission android:name="com.android.vlada.sportisa.Entiteti.maps.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-feature android:glEsversion="0x00020000" android:required="true" /> <uses-permission android:name="com.android.vlada.sportisa.Entiteti.maps.permission.MAPS_RECEIVE" /> <Meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAVb2JuN-5nbaVkGODivuXPJOF5OeRekzo" /> <Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_login" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" /> <activity android:name=".SplashActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".RegistrationActivity" /> <activity android:name=".LoginActivity" /> <activity android:name=".BiranjeAktivnosti" /> <activity android:name=".Trazim" android:label="@string/title_activity_trazim" android:theme="@style/AppTheme" /> <activity android:name=".Organizujem" android:label="@string/title_activity_organizujem" android:theme="@style/AppTheme" /> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> </application>
解决方法
你现在拥有的是:
<Meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAVb2JuN-5nbaVkGODivuXPJOF5OeRekzo" /> <Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_login" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" /> <activity android:name=".SplashActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> ... </application>
像这样在应用程序标记内移动元数据
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <Meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAVb2JuN-5nbaVkGODivuXPJOF5OeRekzo" /> <Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_login" /> <activity android:name=".MainActivity" /> <activity android:name=".SplashActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> ... </application>
今天关于java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法和在java中,尝试对null对象操作时,会产生的介绍到此结束,谢谢您的阅读,有关Android sdk:java.lang.NullPointerException:尝试调用虚方法、Android Studio:尝试在空对象引用上调用虚拟方法“void android.widget.ImageButton.setImageResource(int)”、android – java.lang.NullPointerException:尝试在空对象引用上调用虚方法’java.io.File com.parse.ParsePlugins.getParseDir()’、android – 尝试在空对象引用上调用虚方法’int java.lang.Object.hashCode()’等更多相关知识的信息可以在本站进行查询。
本文标签: