Application de s'écraser en raison de nullpointer exception
Je travaille sur une application et nécessaire une fois l'écran pour saisir une seule fois les variables. Je reçois à l'utilisateur de saisir le rouleau non et dans le cas où il est plus grand que 101400000 j'avais besoin de faire un autre EditText
sur le premier écran.
Puis il se déplace à la principale Activity
qui a un Navgation Curseur.
Unique Activity
pour afficher l'écran.
package com.example.thereaper.thaparexpress;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class OneTime extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ot);
int counter=0;
if(counter==0) {
int roll = 0;
final Global global = (Global) getApplicationContext();
EditText rollNo = (EditText) findViewById(R.id.rollNo);
try {
roll = Integer.parseInt(rollNo.getText().toString());
} catch (NumberFormatException e) {
Toast.makeText(this, "Invalid roll number", Toast.LENGTH_SHORT);
}
if (roll >= 10140000) {
rollNo.setVisibility(View.VISIBLE);
}
EditText group = (EditText) findViewById(R.id.groupNo);
global.setGroup(group.getText().toString());
global.setRoll_No(roll);
counter++;
}
Intent i = new Intent(this,Main.class);
startActivity(i);
}
@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_one_time, menu);
return true;
}
}
Unique fichier xml
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text|number"
android:hint="Roll Number"
android:ems="10"
android:id="@+id/rollNo"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="128dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text|number"
android:hint="Group"
android:ems="10"
android:id="@+id/groupNo"
android:layout_marginTop="115dp"
android:layout_below="@+id/rollNo"
android:layout_centerHorizontal="true"
android:visibility="gone"/>
L'Activité principale
package com.example.thereaper.thaparexpress;
import java.util.ArrayList;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.example.thereaper.thaparexpress.com.example.thereaper.thaparexpress.slider.adapter.NavDrawerListAdapter;
import com.example.thereaper.thaparexpress.fragments.Contribute;
import com.example.thereaper.thaparexpress.fragments.Event;
import com.example.thereaper.thaparexpress.fragments.Societies;
import com.example.thereaper.thaparexpress.fragments.Home;
import com.example.thereaper.thaparexpress.fragments.ThaparLogs;
import com.example.thereaper.thaparexpress.fragments.TimeTable;
import com.example.thereaper.thaparexpress.slider.model.NavDrawerItem;
public class Main extends Activity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
//nav drawer title
private CharSequence mDrawerTitle;
//used to store app title
private CharSequence mTitle;
//slide menu items
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = mDrawerTitle = getTitle();
//load slide menu items
navMenuTitles = getResources().getStringArray(R.array.navDrawer);
//nav drawer icons from resources
navMenuIcons = getResources()
.obtainTypedArray(R.array.navDrawerIcons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_sliderMenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
//adding nav drawer items to array
//Home
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
//Find People
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
//Photos
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
//Communities, Will add a counter here
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));
//Pages
navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
//What's hot, We will add a counter here
navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
//Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
//setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
//enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.app_name, //nav drawer open - description for accessibility
R.string.app_name //nav drawer close - description for accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
//calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
//calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
//on first time display view for first nav item
displayView(0);
}
}
/**
* Slide menu item click listener
* */
private class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//display view for selected nav drawer item
displayView(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
//Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/***
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
* */
private void displayView(int position) {
//update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Home();
break;
case 1:
fragment = new Societies();
break;
case 2:
fragment = new Event();
break;
case 3:
fragment = new ThaparLogs();
break;
case 4:
fragment = new TimeTable();
break;
case 5:
fragment = new Contribute();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_Container, fragment).commit();
//update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
//error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
//Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
Le mainactivity xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frame_Container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<ListView
android:id="@+id/list_sliderMenu"
android:layout_width="280dp"
android:listSelector="@drawable/abc_list_selector_holo_dark"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:background="@drawable/abc_list_selector_background_transition_holo_dark"
android:layout_height="fill_parent">
</ListView>
L'erreur
Process: com.example.thereaper.thaparexpress, PID: 25672
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thereaper.thaparexpress/com.example.thereaper.thaparexpress.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at com.example.thereaper.thaparexpress.Main.onCreate(Main.java:92)
at android.app.Activity.performCreate(Activity.java:5953)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
01-17 19:20:13.131 27231-27231/com.example.thereaper.thaparexpress I/art﹕ Late-enabling -Xcheck:jni
01-17 19:20:13.290 27231-27252/com.example.thereaper.thaparexpress D/OpenGLRenderer﹕ Render dirty regions requested: true
01-17 19:20:13.306 27231-27231/com.example.thereaper.thaparexpress D/Atlas﹕ Validating map...
01-17 19:20:13.377 27231-27252/com.example.thereaper.thaparexpress I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1.04.04.02.162.107_msm8226_LA.BF.1.1__release_AU ()
OpenGL ES Shader Compiler Version: E031.25.01.03
Build Date: 10/28/14 Tue
Local Branch:
Remote Branch: quic/l_LNX.LA.3.6
Local Patches: NONE
Reconstruct Branch: AU_LINUX_ANDROID_LA.BF.1.1.04.04.02.162.107 + cb93e16 + f50fe49 + d7c18e6 + 5b9a565 + 0f3a25d + 607156e + 75511aa + e4d16c0 + 686f3eb + 211a271 + dd281ee + NOTHING
01-17 19:20:13.390 27231-27252/com.example.thereaper.thaparexpress I/OpenGLRenderer﹕ Initialized EGL, version 1.4
01-17 19:20:13.502 27231-27252/com.example.thereaper.thaparexpress D/OpenGLRenderer﹕ Enabling debug mode 0
01-17 19:20:16.737 27231-27231/com.example.thereaper.thaparexpress D/AndroidRuntime﹕ Shutting down VM
01-17 19:20:16.745 27231-27231/com.example.thereaper.thaparexpress E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.thereaper.thaparexpress, PID: 27231
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thereaper.thaparexpress/com.example.thereaper.thaparexpress.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at com.example.thereaper.thaparexpress.Main.onCreate(Main.java:92)
at android.app.Activity.performCreate(Activity.java:5953)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Je ne comprends pas où je vais mal. S'il vous plaît aider.
EDIT: Les nouveaux styles fichier xml après les changements
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
Maintenant, il ya un nouveau message d'erreur
01-17 20:12:03.071 27036-27036/com.example.thereaper.thaparexpress E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.thereaper.thaparexpress, PID: 27036
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thereaper.thaparexpress/com.example.thereaper.thaparexpress.Main}: java.lang.IllegalArgumentException: View android.widget.ListView{2c9eb14c VFED.VC. ......I. 0,0-0,0 #7f090041 app:id/list_sliderMenu} is not a sliding drawer
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.IllegalArgumentException: View android.widget.ListView{2c9eb14c VFED.VC. ......I. 0,0-0,0 #7f090041 app:id/list_sliderMenu} is not a sliding drawer
at android.support.v4.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1306)
at com.example.thereaper.thaparexpress.Main.displayView(Main.java:203)
at com.example.thereaper.thaparexpress.Main.onCreate(Main.java:115)
at android.app.Activity.performCreate(Activity.java:5953)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
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:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
OriginalL'auteur Ayush Pahwa | 2015-01-17
Vous devez vous connecter pour publier un commentaire.
Vous êtes à l'aide de 2 activités:
Activity
etActionBarActivity
. Ce dernier est un programme de soutien et nécessite un thème de AppCompat.Cela signifie que l'Activité est à l'aide d'un AppCompat thème, et
getActionBar()
retournera null.Vos options:
Ont Principale étendre
ActionBarActivity
et remplacergetActionBar
àgetSupportActionBar
.Ont à la fois les activités s'étendent
Activity
et de changer votre thème pour quelque chose de plus récent, par exemple: Holo:avez-vous changer le thème?
Je l'ai changé et maintenant il est de retour IllegalArgumentException
votre post styles.xml fichier
La nouvelle styles.xml fichier <style name="AppTheme" parent="android:Thème.Holo.La lumière.DarkActionBar"> <!-- Personnaliser votre thème ici. --> </style>
OriginalL'auteur Simas
Vous pouvez modifier style.xml fichier.
par Exemple:
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
Et après .fichier java s'étend de l'Activité de la classe.
par Exemple:
public class MainActivity extends Activity {.....}
OriginalL'auteur Chandresh
De la Solution de Changer de parent de " android:Thème.La lumière " à " android:Thème.Holo.La lumière.DarkActionBar " dans styles.xml résolu à l'exception de Pointeur Null.
OriginalL'auteur Ajay B
J'ai changé de
à
Cela a résolu mon erreur....
OriginalL'auteur Debasish Ghosh