Autore Topic: Non trovo l'id degli elementi  (Letto 1603 volte)

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Non trovo l'id degli elementi
« il: 15 Maggio 2015, 00:22:46 CEST »
0
Ciao a tutti, il titolo mi sembra abbastanza esplicativo, praticamente nei progetti che creo non riesco a trovare gli id degli elementi che inserisco nei layout, indipendentemente dal tipo di elemento, che siano button, textview, listview, ecc ecc
Come posso risolvere?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Non trovo l'id degli elementi
« Risposta #1 il: 15 Maggio 2015, 08:24:33 CEST »
0
Se fai R.layout.activity_mail.tvTitolo
Fatto un esempio....non funziona?

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #2 il: 15 Maggio 2015, 13:47:50 CEST »
0
Apparte che non ho capito cosa intendi con "non riesco a trovare gli id".

Però questo è il comportamento normale: (Usiamo un bottone come esempio)
- Nel metodo onCreate dell'activity, ovviamente sotto setContentView
Codice (Java): [Seleziona]
Button button = (Button) findViewById(R.id.idDelBottone); // Ovviamente devi castarlo, perchè findViewById come dice il nome restituisce una View.
- Nel caso usassi LayoutInflater | Android Developers , la cosa dovrebbe essere abbastanza intuitiva, nel senso che il LayoutInflater si occupa di "trasformarti" la tua view scritta tramite XML in un oggetto View. Ovviamente i riferimenti alle tue "sotto View" le hai partendo dall'oggetto View creato.
Codice (Java): [Seleziona]
LayoutInflater lf = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mView= lf.inflate(R.layout.mio_layout, null);
Button button = (Button) mView.findViewById(R.id.idDelBottone);

Saluti.

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #3 il: 15 Maggio 2015, 20:48:16 CEST »
0
@tonno, no, non funziona

@LinkOut
ecco, prendiamo un button, io faccio esattamente come hai scritto nel codice, peccato che non mi trovi assolutamente idDelBottone, sembra che l'ide non legga la classe R.java

inoltre adesso, per ogni progetto che creo, mi da questo errore nell'editor grafico dell'xml

The following classes could not be instantiated:
- android.support.v7.internal.widget.ActionBarOverlayLayout (Open Class, Show Exception, Clear Cache)
 Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE  Exception Details java.lang.ClassNotFoundException: android.support.v7.appcompat.R$attr

questo è quello che mi copia se clicco il copy to clipboard

Codice: [Seleziona]
java.lang.ClassNotFoundException: android.support.v7.appcompat.R$attr
        at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:127)
        at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:53)
        at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:84)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at android.support.v7.internal.widget.ActionBarOverlayLayout.<clinit>(ActionBarOverlayLayout.java:149)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
        at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:413)
        at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105)
        at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:177)
        at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:214)
        at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:142)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at com.android.layoutlib.bridge.bars.BridgeActionBar.<init>(BridgeActionBar.java:84)
        at com.android.layoutlib.bridge.bars.AppCompatActionBar.<init>(AppCompatActionBar.java:56)
        at com.android.layoutlib.bridge.impl.RenderSessionImpl.createActionBar(RenderSessionImpl.java:1691)
        at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:362)
        at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321)
        at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
        at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:497)
        at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:485)
        at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
        at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485)
        at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590)
        at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
        at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
        at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
        at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
        at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
        at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
        at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
        at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
        at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Non trovo l'id degli elementi
« Risposta #4 il: 15 Maggio 2015, 23:46:41 CEST »
0
Io faccio clean e risolvo sempre problemi con la classe R

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #5 il: 15 Maggio 2015, 23:52:39 CEST »
0
L'avrò fatto 20 volte, ma da sempre problemi

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #6 il: 16 Maggio 2015, 12:27:41 CEST »
0
Il tuo errore è dovuto al fatto che la libreria che stai cercando di utilizzare ovvero la android.support.v7 potrebbe non essere utilizzata correttamente.

Se usi Gradle & AndroidStudio devi fare la sincronizzazione, e controllare che la libreria sia implementata correttamente:
dependencies {
    ...
    compile "com.android.support:appcompat-v7:18.0.+"
}

Ulteriori informazion: https://developer.android.com/tools/support-library/setup.html

Saluti.

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #7 il: 16 Maggio 2015, 13:40:49 CEST »
0
questo è quello che ho nel file build.gradle my application

Codice: [Seleziona]
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

questo invece nel file build.gradle app

Codice: [Seleziona]
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.ivan.myapplication"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
}

come devo correggerli?

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #8 il: 16 Maggio 2015, 13:42:12 CEST »
0
E' corretto, prova a fare Gradle Sync, se continua a darti errore fai Invalidate Cache & Restart.

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #9 il: 16 Maggio 2015, 14:04:00 CEST »
0
dove posso fare Invalidate Cache & Restart?

comunque nella finestra del gradle mi da questo errore

Codice: [Seleziona]
Warning:The project encoding (windows-1252) does not match the encoding specified in the Gradle build files (UTF-8).
This can lead to serious bugs.
<a href="http://tools.android.com/knownissues/encoding">More Info...</a><br><a href="open.encodings.settings">Open File Encoding Settings</a>

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #10 il: 16 Maggio 2015, 14:07:29 CEST »
0
http://i.stack.imgur.com/uYQgP.jpg

Mi posti il codice che ti da errore. Grazie.

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #11 il: 16 Maggio 2015, 14:10:20 CEST »
0
è questo il bello, qualsiasi, anche all'avvio di un nuovo progetto!

ad esempio questo è l'xml

Codice: [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

e questa la main actvity

Codice: [Seleziona]
package com.example.ivan.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

comunque ho fatto l'invalidate cache/restart ma non cambia nulla, mi da sempre lo stesso errore nell'editor dell'xml

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #12 il: 16 Maggio 2015, 14:16:50 CEST »
0
Scusa, quindi mi stai dicendo ce questo codice non ti funziona?

Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:id="@+id/mText"        
android:layout_height="wrap_content" />

</RelativeLayout>

Codice (Java): [Seleziona]
package com.example.ivan.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
TextView mText = (TextView) findViewById(R.id.mText);
mText.setText("CIAO COME VA");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

PS: Ho fatto delle modifiche.

Offline konan_ 65

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Sistema operativo:
    Windows 8.1
Re:Non trovo l'id degli elementi
« Risposta #13 il: 16 Maggio 2015, 14:26:35 CEST »
0
no, effettivamente con quel codice non mi da più errore, ma se apro un qualche altro progetto, ad esempio questo

Codice (Java): [Seleziona]
package com.example.ivan.topcruises;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class Home extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        Button btnEnter = (Button) findViewById(android.R.id.enter);
        btnEnter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent openTable = new Intent(Home.this, Table.class);
                startActivity(openTable);
            }
        });
    }


}

con un xml di questo tipo

Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Home">


    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/enter"
       android:id="@+id/enter"
       android:layout_marginBottom="45dp"
       android:layout_alignParentBottom="true"
       android:layout_centerHorizontal="true" />
</RelativeLayout>

non mi trova l'id del bottone

Offline LinkOut

  • Utente normale
  • ***
  • Post: 268
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Non trovo l'id degli elementi
« Risposta #14 il: 16 Maggio 2015, 14:27:45 CEST »
+1
Sostituisci:
Codice (Java): [Seleziona]
Button btnEnter = (Button) findViewById(android.R.id.enter);Con
Codice (Java): [Seleziona]
Button btnEnter = (Button) findViewById(R.id.enter);