Hallo allemaal,
Momenteel zijn wij op school bezig met het programmeren van android apps, maar loop ik vast op de LayoutInflater. Op de één of andere manier vindt hij het .xml bestand dat ik wil toewijzen niet.
Mijn code (waar het om gaat):
private void init() {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.rgbsliderview, this); //hier geeft hij aan: rgbsliderview cannot be resolved or is not a field
r = (SeekBar) findViewById(R.id.seekBar1);
g = (SeekBar) findViewById(R.id.seekBar2);
b = (SeekBar) findViewById(R.id.seekBar3);
SeekBarChangeListener listener = new SeekBarChangeListener();
r.setOnSeekBarChangeListener(listener);
g.setOnSeekBarChangeListener(listener);
b.setOnSeekBarChangeListener(listener);
model = ColorModel.getInstance();
}
Toon Meer
Heeft iemand enig idee waarom hij het xml bestand niet pakt? Deze is gewoon aangemaakt en zit in de /res/layout/ map.
Edit: probleem is opgelost! De fout zat hem in dat ik import R.Java in het bestand zelf had staan. Echter loop ik nu tegen het volgende probleem aan:
Wanneer ik nu custom view van de rgbseekbar wil toevoegen aan mijn activity_main geeft hij een java.lang.NullPointerException. Echter kan ik geen enkele insantie vinden die op null staat, terwijl dit niet zo zou moeten zijn. Volledige code voor de RGBSeekBar view :
package nl.rigault.colormix.view;
import java.util.Observable;
import java.util.Observer;
import nl.rigault.colormix.R;
import nl.rigault.colormix.model.ColorModel;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.SeekBar;
public class RGBSeekBarView extends LinearLayout implements Observer {
protected ColorModel model;
private SeekBar r, g, b;
public RGBSeekBarView(Context context) {
super(context);
init();
}
public RGBSeekBarView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public RGBSeekBarView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.rgbseekbar, this);
r = (SeekBar) findViewById(R.id.seekBar1);
g = (SeekBar) findViewById(R.id.seekBar2);
b = (SeekBar) findViewById(R.id.seekBar3);
SeekBarChangeListener listener = new SeekBarChangeListener();
r.setOnSeekBarChangeListener(listener);
g.setOnSeekBarChangeListener(listener);
b.setOnSeekBarChangeListener(listener);
model = ColorModel.getInstance();
model.addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
r.setProgress(model.getR());
g.setProgress(model.getG());
b.setProgress(model.getB());
}
private class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (!fromUser) {
return;
}
if (seekBar == r) {
model.setR(progress);
}
else if (seekBar == g) {
model.setG(progress);
}
else {
model.setB(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
}
Toon Meer