I've passed the code when I add player = new MyPlayer() in onCreate. but
next step, I change it to array:

MyPlayer[] players;

.
.
.
.
onCreate....
players = new MyPlayer[4];


then it also NPE. why it pass when I use single player but use array do not
pass?

== full code in main activity====
package hktsang56.android.mjhelper;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class name_input extends Activity {
 final static int NUM_PLAYER = 4;
 private MyPlayer[] players;
 MyPlayer player;
 MarkSetting markSetting;
 private EditText[] namesET;
 Button bt[];
 private TextView tv;
 int[] names = new int[]{
   R.id.et_p1,
   R.id.et_p2,
   R.id.et_p3,
   R.id.et_p4
  };
 int[] btIds = new int[]{
   R.id.but_sendName,
   R.id.but_clearName
 };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.player_input);
        players = new MyPlayer[NUM_PLAYER];
        namesET = new EditText[NUM_PLAYER];
        bt = new Button[btIds.length];
        player = new MyPlayer();
        tv = (TextView) findViewById(R.id.tv_monitor);
        tv.setText("onCreate");
        initButIds();
 }
    private void initButIds(){
     for (int i=0; i<btIds.length; i++){
      bt[i] = (Button) findViewById(btIds[i]);
      bt[i].setOnClickListener(myClickListener);
            tv.setText("initButIds");

     }
    }
    private View.OnClickListener myClickListener = new
View.OnClickListener() {

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
         tv.setText("onClick");
      but_click(v.getId());
   }
 };
 public void but_click(int btId){
     switch (btId){
     case R.id.but_sendName:
            tv.setText("but_click");
      setName();
      break;
     case R.id.but_clearName:
      clearName();
      break;
     }
    }
 private void setName() {
  // TODO Auto-generated method stub
  String name="Null";
  for (int i=0; i<NUM_PLAYER; i++){
   namesET[i] = (EditText) findViewById(names[i]);
  }
  for (int i=0; i<NUM_PLAYER; i++){
   name = namesET[i].getText().toString().trim();
   players[i].setPlayerName(name);  // remark: player.setPlayerName(name);
<------------ can be run.
  }
  tv.setText(players[2].getPlayerName());

 }
 private void clearName() {
  // TODO Auto-generated method stub
  for (int i=0; i<NUM_PLAYER; i++){
   namesET[i].setText("");
  }

 }
}


On Wed, May 23, 2012 at 6:29 PM, Daniel Drozdzewski <
daniel.drozdzew...@gmail.com> wrote:

> Jason
>
> name == null
>
> would not cause NPE, as it is simple assignment to a member variable
> in MyPlayer class. If there was anything else within setName() that
> caused NPE, we could see it on the top of the stacktrace.
>
> The cause is that *player* reference in *player_input.setName()* is null.
>
> The way player object is being constructed is wrong: (player = new
> Player;)  This code should not compile, so it begs the question, how
> did the OP manage to run it.
>
> There are many other issues with this code from the first look, like
> naming conventions, and auto generated comments dotting it, just to
> name the few.
>
>
>
> Daniel
>
>
>
>
> On 23 May 2012 10:56, Jason Teagle <teagle.ja...@gmail.com> wrote:
> >> I've create an object class but it cannot work. any mistake of my code?
> >
> >
> >> private void setName() {
> >> // TODO Auto-generated method stub
> >> getNameText();
> >> for (int i=0; i<NUM_PLAYER; i++){
> >> player.setPlayerName(name); // name is a String get from EditText by
> some
> >> code before
> >> }
> >> }
> >
> >
> >> when I run the programme, it have the following error code:
> >
> >
> >> 05-23 09:24:35.115: E/AndroidRuntime(438):
> java.lang.NullPointerException
> >> 05-23 09:24:35.115: E/AndroidRuntime(438):  at
> hktsang56.android.mjhelper
> >> .name_input.setName(name_input.java:81)
> >
> >
> > Which of the lines in your source code is line 81? Is it the line that
> says
> > getNameText()? We need to see that method's definition, if that is the
> case,
> > since I can't see any other problem (if 'name' were coming out null, then
> > the error would be in setPlayerName() rather than in setName() - in fact
> it
> > probably wouldn't generate an error in such a case).
> >
> > Show us the code for getNameText(). You are possibly trying to access a
> > control that you have not filled out correctly.
> >
> >
> >
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com
> > For more options, visit this group at
> > http://groups.google.com/group/android-developers?hl=en
>
>
>
> --
> Daniel Drozdzewski
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
HK Tsang

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to