2017-03-27 3 views
1

aufrufen Ich versuche, eine GridView, die aus meiner SQLite-Datenbank gefüllt ist, aber ich bin es den FehlerFragment: Versuch, die virtuelle Methode 'android.view.View android.view.View.findViewById (int)' auf einem Nullobjekt Referenz

immer

"Versuch virtuelle Methode 'android.view.View android.view.View.findViewById (int)' auf einem null-Objekt Bezug aufzurufen"

MyAdapter.java Klasse

public class MyAdapter extends BaseAdapter { 
Context context; 
ArrayList<Players> playerList; 
private static LayoutInflater inflater = null; 

public MyAdapter(Context context, ArrayList<Players> playerList){ 
    this.context = context; 
    this.playerList = playerList; 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 


@Override 
public int getCount() { 
    return playerList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.layout_grid_item, null); 

    TextView idTextView = (TextView) convertView.findViewById(R.id.tv_player_id); 
    TextView nameTextView = (TextView) convertView.findViewById(R.id.tv_player_name); 
    TextView roleTextView = (TextView) convertView.findViewById(R.id.tv_player_role); 

    Players p = new Players(); 
    p = playerList.get(position); 
    idTextView.setText("ID " + String.valueOf(p.getId())); 
    nameTextView.setText("Name " + String.valueOf(p.getName())); 
    roleTextView.setText("Role " + String.valueOf(p.getRole())); 

    return convertView; 
} 

}

GameActivity.java Klasse

public class GameActivity extends Activity { 
DatabaseHelper db; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.game_activity); 
    db = new DatabaseHelper(this); 

} 

public void FragmentOneClick(View view) { 
    Fragment myfragment; 
    myfragment = new RolesFragment(); 

    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_switch, myfragment); 
    fragmentTransaction.commit(); 
} 

}

RolesFragment.java

public class RolesFragment extends Fragment { 

GridView gridView; 
ArrayList<Players> playersList; 
MyAdapter adapter; 

public View onCreateView(LayoutInflater inflater,ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_viewroles, container, false); 

    gridView = (GridView) getView().findViewById(R.id.gv_players); 

    DatabaseHelper databaseHelper = new DatabaseHelper(getActivity()); 
    playersList = new ArrayList<Players>(); 

    playersList = databaseHelper.getPlayers(); 
    adapter = new MyAdapter(getActivity(), playersList); 
    gridView.setAdapter(adapter); 

    return view; 
} 

}

Antwort

2

Problem ist getView() kehrt null.

im Fragment müssen Sie verwenden: Fragments view Instanz.

so statt:

gridView = (GridView) getView().findViewById(R.id.gv_players); 

Verwendung:

gridView = (GridView) view.findViewById(R.id.gv_players); 
+0

Ofcourse !! Vielen Dank, es funktioniert jetzt nach stundenlangem Spielen mit dem Code. –

+0

@TussRamzan Wenn die Antwort funktioniert ... als korrekt markieren. Danke – rafsanahmad007

Verwandte Themen