java–findviewbyid上的Android空指针异常

java–findviewbyid上的Android空指针异常,第1张

概述嗨我目前在我的Android媒体播放器项目工作,一切都很好,但后来我改变了布局设计,现在我每次启动时都得到java.nullpointerexception,我已经搜索到了无处不在的答案,但我所做的一切都不起作用..任何人都可以帮我吗?这里是layout.xml<RelativeLayoutxmlns:android="http://schemas.

嗨我目前在我的Android媒体播放器项目工作,一切都很好,但后来我改变了布局设计,现在我每次启动时都得到java.nullpointerexception,我已经搜索到了无处不在的答案,但我所做的一切都不起作用..任何人都可以帮我吗?

这里是layout.xml

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:ID="@+ID/relativeLayout1"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:background="#000000"androID:orIEntation="vertical" ><Seekbar    androID:ID="@+ID/sbSong"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:layout_alignParentBottom="true"    androID:layout_alignParentleft="true"    androID:layout_marginBottom="72dp" /><Imagebutton    androID:ID="@+ID/btnNext"    androID:contentDescription="@string/Next"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignParentBottom="true"    androID:layout_alignParentRight="true"    androID:src="@drawable/next" /><Imagebutton    androID:ID="@+ID/btnBack"    androID:contentDescription="@string/PrevIoUs"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignParentBottom="true"    androID:layout_alignParentleft="true"    androID:src="@drawable/prevIoUs" /><Imagebutton    androID:ID="@+ID/btnPlay"    androID:contentDescription="@string/btnPlay"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignParentBottom="true"    androID:layout_centerHorizontal="true"    androID:src="@drawable/play" /><Imagebutton    androID:ID="@+ID/btnShuffle"    androID:contentDescription="@string/shuffleOn"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_above="@+ID/sbSong"    androID:layout_alignParentRight="true"    androID:src="@drawable/shuffle_off" /><Imagebutton    androID:ID="@+ID/btnRepeat"    androID:contentDescription="@string/repeatOn"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_above="@+ID/sbSong"    androID:layout_alignParentleft="true"    androID:src="@drawable/repeat_off" /><TextVIEw    androID:ID="@+ID/txtDuration"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignBottom="@+ID/btnShuffle"    androID:layout_toleftOf="@+ID/btnShuffle"    androID:text="TextVIEw" /><TextVIEw    androID:ID="@+ID/txtCurrentposition"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignBottom="@+ID/btnRepeat"    androID:layout_toRightOf="@+ID/btnRepeat"    androID:text="TextVIEw" /><ImageVIEw    androID:ID="@+ID/albumartwork"    androID:contentDescription="@string/noSong"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_above="@+ID/btnShuffle"    androID:layout_centerHorizontal="true"    androID:layout_marginBottom="66dp"    androID:src="@drawable/noartwork" /><TextVIEw    androID:ID="@+ID/txtSongTitle"    androID:layout_wIDth="wrap_content"    androID:layout_height="40dp"    androID:layout_alignParentleft="true"    androID:layout_alignParentRight="true"    androID:layout_alignParenttop="true"    androID:text="Medium Text"    androID:textAppearance="?androID:attr/textAppearanceMedium" /><Imagebutton    androID:ID="@+ID/btnPlay@R_502_6818@"    androID:contentDescription="@string/Song@R_502_6818@"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignParentleft="true"    androID:layout_alignParenttop="true"    androID:src="@drawable/dropdown" /><@R_502_6818@VIEw    androID:ID="@+ID/lstSongs"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:layout_alignParentleft="true"    androID:visibility="invisible"    androID:layout_below="@+ID/txtSongTitle" ></@R_502_6818@VIEw><EditText    androID:ID="@+ID/searchBox"    androID:visibility="invisible"    androID:layout_height="wrap_content"    androID:layout_wIDth="match_parent"    androID:layout_alignParentRight="true"    androID:layout_alignParenttop="true"    androID:layout_toRightOf="@+ID/btnPlay@R_502_6818@"    androID:ems="10" >    <requestFocus /></EditText></relativeLayout>

– 和.java
    包com.example.player;

import java.util.Array@R_502_6818@;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Random;import java.util.concurrent.Executors;import java.util.concurrent.scheduledexecutorservice;import java.util.concurrent.TimeUnit;import com.example.player.R;import androID.media.MediaMetadataRetrIEver;import androID.media.MediaPlayer;import androID.media.MediaPlayer.OnCompletion@R_502_6818@ener;import androID.os.Bundle;import androID.os.Handler;import androID.os.Message;import androID.provIDer.MediaStore;import androID.annotation.Suppresslint;import androID.annotation.TargetAPI;import androID.app.Activity;import androID.content.pm.ActivityInfo;import androID.database.Cursor;import androID.graphics.Bitmap;import androID.graphics.BitmapFactory;import androID.text.Editable;import androID.text.TextWatcher;import androID.util.Log;import androID.vIEw.Menu;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClick@R_502_6818@ener;import androID.vIEw.VIEw.Ontouch@R_502_6818@ener;import androID.Widget.AdapterVIEw;import androID.Widget.AdapterVIEw.OnItemClick@R_502_6818@ener;import androID.Widget.EditText;import androID.Widget.Imagebutton;import androID.Widget.ImageVIEw;import androID.Widget.listadapter;import androID.Widget.@R_502_6818@VIEw;import androID.Widget.Seekbar;import androID.Widget.SimpleAdapter;import androID.Widget.TextVIEw;public  class MainActivity extends Activity implements OnCompletion@R_502_6818@ener {//Declaration de variable globale//buttonprivate Imagebutton btnPlayPause;private Imagebutton btnShuffle;private Imagebutton btnRepeat;private Imagebutton btnNext;private Imagebutton btnBack;private Imagebutton btnSong@R_502_6818@;private Seekbar songbar;private TextVIEw txtTitle;private TextVIEw txtCurrentTime;private TextVIEw txtDuration;private @R_502_6818@VIEw lstSongs;private ImageVIEw cover;private EditText searchBox;//Variableprivate boolean isShuffle = false;private boolean isRepeat = false;private boolean isVisible = false;private String minutes = "";private String seconds = "";private int textlength = 0;private Array@R_502_6818@<HashMap<String,String>> songs_sort = new      Array@R_502_6818@<HashMap<String,String>>();@Suppresslint("SdCardpath")private String SDCARD ="/sdcard/";//MediaPlayerprivate MediaPlayer mp;private int songIndex = 0;//Songspublic Array@R_502_6818@<HashMap<String, String>> songs = new Array@R_502_6818@<HashMap<String,     String>>();//Handler de la seekbarprivate final Handler handler = new Handler();//Au load de l'Activity@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    initialise();}private voID initialise(){    //MediaPlayer    mp = new MediaPlayer();    //Dont Move Screen    setRequestedOrIEntation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);    //findVIEwByID    btnPlayPause = (Imagebutton) findVIEwByID(R.ID.btnPlay);    btnShuffle = (Imagebutton) findVIEwByID(R.ID.btnShuffle);    btnRepeat = (Imagebutton) findVIEwByID(R.ID.btnRepeat);    btnNext = (Imagebutton) findVIEwByID(R.ID.btnNext);    btnBack = (Imagebutton) findVIEwByID(R.ID.btnBack);    txtTitle = (TextVIEw) findVIEwByID(R.ID.txtSongTitle);    txtCurrentTime = (TextVIEw) findVIEwByID(R.ID.txtCurrentposition);    txtDuration = (TextVIEw) findVIEwByID(R.ID.txtDuration);    lstSongs = (@R_502_6818@VIEw) findVIEwByID(R.ID.lstSongs);    songbar = (Seekbar) findVIEwByID(R.ID.sbSong);    cover = (ImageVIEw) findVIEwByID(R.ID.albumartwork);    searchBox = (EditText) findVIEwByID(R.ID.searchBox);    //set les @R_502_6818@ener    btnPlayPause.setonClick@R_502_6818@ener(new OnClick@R_502_6818@ener() {@OverrIDe public voID     onClick(VIEw v) {playPause();}});    btnShuffle.setonClick@R_502_6818@ener(new OnClick@R_502_6818@ener() {@OverrIDe public voID     onClick(VIEw v) {shuffle();}});    btnRepeat.setonClick@R_502_6818@ener(new OnClick@R_502_6818@ener() {@OverrIDe public voID     onClick(VIEw v) {repeat();}});    btnNext.setonClick@R_502_6818@ener(new OnClick@R_502_6818@ener(){@OverrIDe public voID     onClick(VIEw v) {next();}});    btnBack.setonClick@R_502_6818@ener(new OnClick@R_502_6818@ener(){@OverrIDe public voID     onClick(VIEw v) {back();}});    btnSong@[email protected]@R_502_6818@ener(new OnClick@R_502_6818@ener(){@OverrIDe public voID     onClick(VIEw v) {visible();}});    searchBox.addTextChanged@R_502_6818@ener(new TextWatcher(){        public voID afterTextChanged(Editable et)        {        }        @OverrIDe        public voID beforeTextChanged(CharSequence chars, int start,                int count, int after) {            // Todo auto-generated method stub        }        @OverrIDe        public voID onTextChanged(CharSequence chars, int start, int                     count,int after)        {            // Todo auto-generated method stub            textlength = searchBox.getText().length();            if(textlength > 0)            {                songs_sort.clear();                for(int i = 0; i < songs.size();i++)                {                    if(textlength <                                             songs.get(i).get("songTitle").length())                    {    if(searchBox.getText().toString().equalsIgnoreCase((String)     songs.get(i).get("songTitle").subSequence(0, textlength)))                        {    songs_sort.add(songs.get(i));                        }                    }                }                adapt(songs_sort);            }            else            {                createPlay@R_502_6818@(SDCARD);             }        }    });    mp.setonCompletion@R_502_6818@ener(this);    songbar.setontouch@R_502_6818@ener(new Ontouch@R_502_6818@ener() {@OverrIDe public boolean     ontouch(VIEw v, MotionEvent event) {        seekChange(v);        return false; }    });    //la play@R_502_6818@    createPlay@R_502_6818@(SDCARD);}//rempli la @R_502_6818@vIEw avec les titres de chansonsprivate voID createPlay@R_502_6818@(String dir){    songs.clear();    /*Aller chercher TOUTES les chansons de la sdcard      * grâce a un cursor et une db     * la db Mediastore est créer par androID pour     * stocker tout les informations sur les fichIErs de la sdcard     * je pousse le resultat de ma requete dans mon array de chansons     * avec un while     */    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";    String[] projection = {            MediaStore.Audio.Media.Title,            MediaStore.Audio.Media.ARTIST,            MediaStore.Audio.Media.DATA    };    @SuppressWarnings("deprecation")    Cursor cursor = this.managedquery(            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,            projection,            selection,            null,            null);    while(cursor.movetoNext()){        HashMap<String,String> song = new HashMap<String,String>();        song.put("songTitle",cursor.getString(0)+"-"+cursor.getString(1));        song.put("songPath",cursor.getString(2) );        songs.add(song);    }    //j'utilisais ceci avant pour aller chercher les chansons par une boucle de fichIEr/*  file root = new file(dir);    //loop a travers la carte sd Note: @R_502_6818@files() n'entre pas dans les folders    if(root.@R_502_6818@files().length > 0)    {        for(file file : root.@R_502_6818@files())        {            //if(file.isDirectory())            //{            //}else            //{                if(file.toString().endsWith(".mp3"))                {                    HashMap<String, String> song = new HashMap<String,    String>();                    song.put("songTitle", file.getname().substring(0,    (file.getname().length() - 4)));                    song.put("songPath", file.getPath());                    songs.add(song);                }            //}        }    }*/    //lIEr avec adapter    adapt(songs);}private voID adapt(Array@R_502_6818@<HashMap<String,String>> array){    //sort le array@R_502_6818@    Collections.sort(array, new Comparator<HashMap<String,String>>() {        @OverrIDe        public int compare(HashMap<String, String> lhs,                HashMap<String, String> rhs) {            // Todo auto-generated method stub            return    lhs.get("songTitle").comparetoIgnoreCase(rhs.get("songTitle"));        }    });    //LIEr le array au @R_502_6818@vIEw comme data       listadapter adapter = new SimpleAdapter(this, array,R.layout.song_item, new     String[] { "songTitle" }, new int[] {R.ID.song });    lstSongs.setAdapter(adapter);    lstSongs.setonItemClick@R_502_6818@ener(new OnItemClick@R_502_6818@ener(){        @OverrIDe        public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int     position,                long ID) {            // Todo auto-generated method stub            playthis(position);        }    });}//joue la chanson a l'index selectionnerprivate voID playthis(int position){    songIndex = position;    String path = songs.get(songIndex).get("songPath");    Log.w("PLAYER","song path = "+ path);    try {        mp.reset();        mp.setDataSource(path);        mp.prepare();        songbar.setMax(mp.getDuration());        btnPlayPause.setimageResource(R.drawable.pause);        txtTitle.setText(songs.get(songIndex).get("songTitle"));        txtCurrentTime.setText("0:00");        mp.start();        timer();        progressbar();        getCover(path);    } catch (Exception e) {        // Todo: handle exception    }}//Function PlayPause buttonprivate voID playPause(){       if(mp.isPlaying()){        if(mp!=null){            mp.pause();            // je change l'image du boutton            btnPlayPause.setimageResource(R.drawable.play);        }    }else{        // repartir la chanson        if(mp!=null){            mp.start();            // je change l'image du boutton            btnPlayPause.setimageResource(R.drawable.pause);        }    }}//Function next la chansonprivate voID next(){    if(isShuffle)    {        //sort une chanson random        Random rand = new Random();        songIndex = rand.nextInt(songs.size()-1);        playthis(songIndex);    }    else    {        //check si la chanson qui vIEnt d'être jouer est la dernIEre de la @R_502_6818@e        if(songIndex < songs.size()-1)        {            songIndex = songIndex + 1;            playthis(songIndex);        }        else        {            //repart avec la premIEre chanson            playthis(0);        }    }}//Function back() lit la chanson précédente ou une autre randomprivate voID back(){    if(isShuffle)    {        //sort une chanson random        Random rand = new Random();        songIndex = rand.nextInt(songs.size()-1);        playthis(songIndex);    }    else    {        //check si la chanson qui vIEnt d'être jouer est la premIEre de la @R_502_6818@e        if(songIndex > 0)        {            songIndex = songIndex - 1;            playthis(songIndex);        }        else        {            //joue la dernIEre chanson            playthis(songs.size()-1);        }    }}//Function timer pour le current time of the songprivate voID timer(){    //Duration de la chanson    minutes = String.valueOf(mp.getDuration()/60000);    seconds = String.valueOf(mp.getDuration() % 60000);    seconds = seconds.substring(0, 2);    txtDuration.setText(minutes+":"+seconds);    scheduledexecutorservice myShedule = Executors.newScheduledThreadPool(1);    myShedule.scheduleWithFixedDelay(            new Runnable(){       @OverrIDe       public voID run() {        monitorHandler.sendMessage(monitorHandler.obtainMessage());       }},             200, //initialDelay            200, //delay            TimeUnit.MILliSECONDS);      }   Handler monitorHandler = new Handler(){       @OverrIDe       public  voID handleMessage(Message msg) {           mediacurrentposition();       }  };  //Function mediacurrentposition  private voID mediacurrentposition()  {    if(mp.isPlaying())    {        minutes = String.valueOf(mp.getCurrentposition()/60000);        seconds = String.valueOf(mp.getCurrentposition() % 60000);        //seconds = seconds.substring(0, 2);        /*if(Integer.getInteger(seconds) < 10)        {            seconds = "0"+seconds ;        }*/        txtCurrentTime.setText(minutes+":"+seconds);    }  }//Function seekbar qui suis la chansonprivate voID progressbar(){    songbar.setProgress(mp.getCurrentposition());    if (mp.isPlaying()) {        Runnable notification = new Runnable() {            public voID run() {                progressbar();            }        };        handler.postDelayed(notification,1000);    }else{        mp.pause();        btnPlayPause.setimageResource(R.drawable.play);        songbar.setProgress(mp.getCurrentposition());    }}//partir la chanson ou la seekbar estprivate voID seekChange(VIEw v){    Seekbar sb = (Seekbar)v;    if(mp.isPlaying()){        mp.seekTo(sb.getProgress());    }    else    {        mp.seekTo(sb.getProgress());    }    timer();}private voID shuffle(){    if(isShuffle)    {        isShuffle = false;        btnShuffle.setimageResource(R.drawable.shuffle_off);    }else{        isShuffle = true;        btnShuffle.setimageResource(R.drawable.shuffle_on);    }}private voID repeat(){    if(isRepeat)    {        isRepeat = false;        btnRepeat.setimageResource(R.drawable.repeat_off);    }else{        isRepeat = true;        btnRepeat.setimageResource(R.drawable.repeat_on);    }}@OverrIDepublic voID onCompletion(MediaPlayer arg0){    if(isRepeat)    {        //joue la même chanson sur repeat        playthis(songIndex);    }    else if(isShuffle)    {        //sort une chanson random        Random rand = new Random();        songIndex = rand.nextInt(songs.size()-1);        playthis(songIndex);    }    else    {        //la prochaine chanson suivant la  chanson qui vIEnt d'être jouer        //check si la chanson qui vIEnt d'être jouer est la dernIEre de la @R_502_6818@e        if(songIndex < songs.size()-1)        {            songIndex = songIndex + 1;            playthis(songIndex);        }        else        {            //repart avec la premIEre chanson            playthis(0);        }    }}private voID visible(){    if(isVisible)    {        lstSongs.setVisibility(VIEw.INVISIBLE);        searchBox.setVisibility(VIEw.INVISIBLE);        isVisible = false;        cover.setVisibility(VIEw.VISIBLE);        txtCurrentTime.setVisibility(VIEw.VISIBLE);        txtDuration.setVisibility(VIEw.VISIBLE);    }    else    {        lstSongs.setVisibility(VIEw.VISIBLE);        searchBox.setVisibility(VIEw.VISIBLE);        isVisible = true;        cover.setVisibility(VIEw.INVISIBLE);        txtCurrentTime.setVisibility(VIEw.INVISIBLE);        txtDuration.setVisibility(VIEw.INVISIBLE);    }}@TargetAPI(10)@Suppresslint({ "NewAPI", "NewAPI", "NewAPI" })private voID getCover(String path){    MediaMetadataRetrIEver  MetaDataRetriver = new MediaMetadataRetrIEver();    MetaDataRetriver.setDataSource(path);    byte[] pic;    pic = MetaDataRetriver.getEmbeddedPicture();    if(pic == null)    {        cover.setimageResource(R.drawable.noartwork);    }    else    {        Bitmap bMap;        bMap = BitmapFactory.decodeByteArray(pic, 0, pic.length);        cover.setimageBitmap(bMap);    }}@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.activity_main, menu);    return true;}}

– Logcat

11-30 11:06:28.989: D/AndroIDRuntime(15673): Shutting down VM11-30 11:06:28.989: W/dalvikvm(15673): threadID=1: thread exiting with uncaught exception (group=0x40018578)11-30 11:06:28.999: E/AndroIDRuntime(15673): FATAL EXCEPTION: main11-30 11:06:28.999: E/AndroIDRuntime(15673): java.lang.RuntimeException: Unable to  start activity ComponentInfo{com.example.player/com.example.player.MainActivity}:   java.lang.NullPointerException11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1651)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.ActivityThread.access00(ActivityThread.java:117)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:935)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.os.Handler.dispatchMessage(Handler.java:99)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.os.Looper.loop(Looper.java:130)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.ActivityThread.main(ActivityThread.java:3687)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at java.lang.reflect.Method.invokeNative(Native Method)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at java.lang.reflect.Method.invoke(Method.java:507)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:625)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at dalvik.system.NativeStart.main(Native Method)11-30 11:06:28.999: E/AndroIDRuntime(15673): Caused by: java.lang.NullPointerException11-30 11:06:28.999: E/AndroIDRuntime(15673):    at com.example.player.MainActivity.initialise(MainActivity.java:117)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at com.example.player.MainActivity.onCreate(MainActivity.java:88)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)11-30 11:06:28.999: E/AndroIDRuntime(15673):    at   androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1615)11-30 11:06:28.999: E/AndroIDRuntime(15673):    ... 11 more

好吧,我知道这是很多代码……我一直在研究那个项目,因为我在学校的最后一个项目已经有2个月了,但是现在我仍然坚持这个错误

解决方法:

这一行在这里

btnSong@[email protected]@R_502_6818@ener(new OnClick@R_502_6818@ener(){@OverrIDe public voID     onClick(VIEw v) {visible();}});

您从未为此特定视图调用findVIEwByID(),因此指针仍为null.

总结

以上是内存溢出为你收集整理的java – findviewbyid上的Android空指针异常全部内容,希望文章能够帮你解决java – findviewbyid上的Android空指针异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存