Jump to content

Erro +id


Nmar93
 Share

Recommended Posts

Boas pessoal,

Eu ao criar um novo textView, o que quer que seja nao consigo chama-lo no findviewbyId...

Ja fui ver o R.java e encontra-se la tudo direito. Nao sei porque e que se lembrou de fazer isto.

Ja verifiquei os imports (se tinha o pt.meupacote.qualquercoisa.R) e esta tudo direito.

Alguem me sabe dizer como posso corrigir este erro chato ? --'

Thanks !

Link to comment
Share on other sites

Honestamente ja deixei esse erro para tras mas obrigado pela resposta!

Aproveito para, em vez de andar sempre a criar novos topicos, aproveito este mesmo para nao fazer tanto spam...

É assim, eu estou a desenvolver uma aplicação que regista preços, mas agora adicionei a data.

Tem uma checkbox que se premir aparece um outro botao, e esse mesmo botao abre um diálogo com a data actual (getInstance() ). Assim que premir no OK, o que aquilo faz e chamar uma função que faz appends dessa data colocada, e faço um setText dessa data numa TextView, que se mantem escondida.

Eu ja andei para ali aos tombos com aquilo, o setText para a textview funciona na perfeiçao, mas assim que adicionei um campo novo na base de dados, que e a data (criei os seus atributos, o setData, getData, adicionei o seu adapter, epa tudo...) aquilo nao regista, ou estoura, diz que lamenta, mas foi abaixo inesperadamente, coisas dessas...

Eu não faço mesmo a minima o que podera ser lol...

Se souberem de alguma coisa, por favor! Eu estou aqui para ver lol 😉

Cumprimentos

Link to comment
Share on other sites

Continuo a achar que esse teu novo problema poderá ser no AndroidManifest. Vai ao site de developers do Android e espreita para que serve o AndroidManifest. Também sem código não te consigo dizer o que está mal.

Link to comment
Share on other sites

public class CombustivelDataBaseHandler extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "CombustiveisManager";

private static final String TABLE_COMBUSTIVEIS = "Combustiveis";

private static final String KEY_ID = "id";
private static final String KEY_PRECO = "preco";
[b]private static final String KEY_DATA = "data";[/b]

public CombustivelDataBaseHandler(Context context) {
 super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
 String CREATE_COMBUSTIVEIS_TABLE = "CREATE TABLE " + TABLE_COMBUSTIVEIS +"("
   + KEY_ID + " INTEGER PRIMARY KEY,"
   + KEY_PRECO + " TEXT,"
   +[b] KEY_DATA + " TEXT"[/b] + ")";
 db.execSQL(CREATE_COMBUSTIVEIS_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 //"Mata" a outra tabela se existir
 db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMBUSTIVEIS);

 //cria as tabelas de novo
 onCreate(db);
}

public void addCombustivel(Combustivel Combustivel){
 SQLiteDatabase db = this.getWritableDatabase();

 ContentValues values = new ContentValues();
 values.put(KEY_PRECO, Combustivel.getPreco());
[b]  values.put(KEY_DATA, Combustivel.getData()[/b]);

 db.insert(TABLE_COMBUSTIVEIS, null,values);
 db.close();
}

public Combustivel getCombustiveis(int id){

 SQLiteDatabase db = this.getReadableDatabase();

 Cursor cursor = db.query(TABLE_COMBUSTIVEIS, new String[]{KEY_ID, KEY_PRECO[b], KEY_DATA[/b]}
 , KEY_ID + "=?", new String[] {String.valueOf(id)},
  null, null, null, null);

 if (cursor != null) cursor.moveToFirst();

  Combustivel Combustivel = new Combustivel(Integer.parseInt(cursor.getString(0)), cursor.getString(1),
   [b] cursor.getString(2)[/b]);  

  return Combustivel;
}

public ArrayList<Combustivel> getAllCombustiveis(){
 ArrayList<Combustivel> CombustivelList = new ArrayList<Combustivel>();

 SQLiteDatabase db = this.getWritableDatabase();

 Cursor cursor = db.query(TABLE_COMBUSTIVEIS, null, null, null, null, null, null);

 if(cursor.moveToFirst()){
  do{
   Combustivel Combustivel = new Combustivel();
   Combustivel.setID(Integer.parseInt(cursor.getString(0)));
   Combustivel.setPreco(cursor.getString(1));
[b]    Combustivel.setData(cursor.getString(2));[/b]

   CombustivelList.add(Combustivel);
  }while(cursor.moveToNext());
 }
 return CombustivelList;
}

public int UpdateCombustivel(Combustivel Combustivel){
 SQLiteDatabase db = this.getWritableDatabase();

 ContentValues values =  new ContentValues();
 values.put(KEY_PRECO, Combustivel.getPreco());
[b]  values.put(KEY_DATA, Combustivel.getData());[/b]

 return db.update(TABLE_COMBUSTIVEIS, values, KEY_ID + " = ?",
   new String[] {String.valueOf(Combustivel.getID())});
}

public void DeleteCombustivel(Combustivel Combustivel){
 SQLiteDatabase db = this.getWritableDatabase();
 db.delete(TABLE_COMBUSTIVEIS, KEY_ID + " = ?", new String[]
   {String.valueOf(Combustivel.getID())});
}
}

Ca esta o meu handler todo. O que esta a negrito foi o que eu alterei. Claro que ainda alterei o meu adapter. Acrescentei mais uma textview no meu list_item, que e o que deve aparecer precisamente no listview quando for a listar aquilo que eu quero.

Eu tenho a certeza absoluta que nao e do Manifest! Porque eu ja tinha feito um trabalho semelhante e ja verifiquei e ta tudo igual.

Oh boa, bem o que esta a negrito, aquilo que alterei e o que tem as tags ...

Edited by Nmar93
Link to comment
Share on other sites

Verifica se tens permissões para o SQLite no Manifest:

<activity
	    android:name=".CombustivelDataBaseHandler"
	    android:label="@string/app_name" >
	    <intent-filter>
		    <action android:name="com.ptandroid.tutorial.SQLVIEW" />
		    <category android:name="android.intent.category.DEFAULT" />
	    </intent-filter>
    </activity>
Link to comment
Share on other sites

Lool obrigado pela resposta amigo, mas isto sinceramente comecou a dar e nem sei como!

Mas agora levo uma pergunta mais simples, esta e daquelas que ate tenho alguma vergonha de perguntar, mas e necessario lool : D

E simples: Obter a soma de uma certa coisa da tabela.

Tenho dois atributos. Que e o preço e a data. Eu la faço essa treta toda no sqlite, ate tenho o codigo la em cima. Mas no adapter e onde eu chamo os meus texviews e chamo desta maneira:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
 View v = convertView;
 if (v == null){
  LayoutInflater vi = (LayoutInflater) getContext()
  .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  v = vi.inflate(R.layout.list_item_combustivel, null);
 }

 Combustivel Combustivel = combustivel.get(position);
 if (Combustivel != null){

  TextView TvPreco = (TextView) v.findViewById(R.id.TvPrecoDoCombustivel);
  TextView TvData = (TextView) v.findViewById(R.id.TvDataDoCombustivel);

  if (Combustivel != null) {
   TvPreco.setText("Preço do Combustível: " + Combustivel.getPreco() + " €");
   TvData.setText("Data (Ano/Mês/Dia): " + Combustivel.getData());
  }
 }
 return v;
}

Isto e, como se sabe, o que preenche cada item da listview...

Agora eu so quero e obter a soma de todos os preços no cabeçalho da listview. Eu criei uma textview em cima dela, po lado direito e faço assim no codigo mesmo da listagem:

 Combustivel combustivelTotal = new Combustivel();

 String precoTotal = "";

 precoTotal += combustivelTotal.getPreco();

 tv_TotalCombustivel.setText("Total: " + precoTotal);

Eu creio que e errado fazer o new Combustivel, mas la esta, sendo novo nisto faço erros basicos lol 😛

Cumprimentos!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.