Soru & Cevap

findViewById sorunu

03.12.2014 - 01:57

Arkadaşlar merhaba,

Benim anlamadığım bir kısım var onu sizinle paylaşıp çözüm bulmak istiyorum.

ben activity_main.xml dosyasında textView ve listView adlı iki tane bileşen tanımladım bunlarında id'lerini şu şekilde yazdım.

 android:id="@+id/durum"

 android:id="@+id/liste"

graphical layout'da zaten direk çıkıyor görsel olarak orada bir sorun yok fakat java dosyamda findViewById ile yazmak istediğim zaman kırmızı ünlem çıkartıp cannot be resolved hatası veriyor.Ünleme tıkladığım da ise create field 'durum' in type id/create constant 'durum' in type 'id'  ve rename in file adlı çözümler üretiyor fakat bunlardan herhangi birine seçtiğim zaman da R.java da variable üretiyor.Yani benim anlamadığım nokta şu benim bu şekilde hata almadan xml dosyasındaki değişkenlerimi nasıl java'da çağırabilirim ?

 

Teşekkürler .

362 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user makkartal
makkartal
03.12.2014 - 08:49

[code]

package com.makkartal.contexmenu;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    private static final int ID_DUZENLE = Menu.FIRST;
    private static final int ID_SIL = Menu.FIRST + 1;

    private TextView durumTextView;

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

        durumTextView = (TextView) findViewById(R.id.durum); ****
        ListView list = (ListView) findViewById(R.id.list);****
        String[] names = getResources().getStringArray(R.id.names);****
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.list_item, names);
        list.setAdapter(adapter);
        registerForContextMenu(list);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(Menu.NONE, ID_SIL, 0, "SİL");
        menu.add(Menu.NONE, ID_DUZENLE, 1, "DÜZENLE");

    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
                .getMenuInfo();
        TextView selectedItem = (TextView) info.targetView;
        if (item.getItemId() == ID_SIL) {
            durumTextView.setText(selectedItem.getText()
                    + "için SİL tıklandı !");
            return true;

        }
        if (item.getItemId() == ID_DUZENLE) {
            durumTextView.setText(selectedItem.getText()
                    + "için Düzenle Tıklandı ! ");
            return true;

        }
        return false;

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        TextView textView = (TextView) findViewById(R.id.hello);
        switch (item.getItemId()) {
        case R.id.geridon:****
            textView.setText("Geri Dön Tıklandı");

            return true;

        case R.id.guncelle:****
            textView.setText("Güncelle Tıklandı");
            return true;

        case R.id.dahafazla:****
            textView.setText("Daha Fazla Tıklandı");
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }

    }
}

[/code]

 

**** şu işareti koyduğum her yerde sorun çıkartıyor fakat alt kısımda ki case durumlarında "Migrate Android Code" dışında herhangi bir suggestion vermiyor.

Muhammed ÇOBANOĞLU
03.12.2014 - 02:45
Herhangi bir yerde yapmış olduğun hatadan dolayı proje derlenmemiş olabilir. Bu hata xml'de yapmış olduğun hatadan da kaynaklanabilir. İlk olarak projenin Build Automatically kısmının seçili olduğunu kontrol etmelisin. Eğer açık değilse uygulamayı manuel olarak derlemelisin. Eğer buralardan bir sonuç alamadıysan Problems penceresindeki hataları kontrol ederek projenin derlememesinin nedenini bulabilirsin. Bu pencerede çok sayıda hata görünür ama bunlardan sadece bir tanesi için proje derlenmez.
picture-31426-1459527806.jpg
SavasDersimCelik
03.12.2014 - 04:13

kodu yazarsan yardımcı olmaya çalışırım.

bende bir ara fragment kullanımında  takıldım  çözdüm ama

[code]View xxxxxxx= inflater.inflate(R.layout.sezon1, container, false);

button = (ImageButton) xxxxxxx.findViewById(R.id.imageButton1);[/code]

 

findViewById kısmın başına yukardaki şekilde ekleme yapmanız gerekiyor.

Mert Akkartal
03.12.2014 - 08:48
[code] package com.makkartal.contexmenu; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends ActionBarActivity { private static final int ID_DUZENLE = Menu.FIRST; private static final int ID_SIL = Menu.FIRST + 1; private TextView durumTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); durumTextView = (TextView) findViewById(R.id.durum); **** ListView list = (ListView) findViewById(R.id.list);**** String[] names = getResources().getStringArray(R.id.names);**** ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item, names); list.setAdapter(adapter); registerForContextMenu(list); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(Menu.NONE, ID_SIL, 0, "SİL"); menu.add(Menu.NONE, ID_DUZENLE, 1, "DÜZENLE"); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); TextView selectedItem = (TextView) info.targetView; if (item.getItemId() == ID_SIL) { durumTextView.setText(selectedItem.getText() + "için SİL tıklandı !"); return true; } if (item.getItemId() == ID_DUZENLE) { durumTextView.setText(selectedItem.getText() + "için Düzenle Tıklandı ! "); return true; } return false; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { TextView textView = (TextView) findViewById(R.id.hello); switch (item.getItemId()) { case R.id.geridon:**** textView.setText("Geri Dön Tıklandı"); return true; case R.id.guncelle:**** textView.setText("Güncelle Tıklandı"); return true; case R.id.dahafazla:**** textView.setText("Daha Fazla Tıklandı"); return true; default: return super.onOptionsItemSelected(item); } } } [/code] **** şu işareti koyduğum her yerde sorun çıkartıyor fakat alt kısımda ki case durumlarında "Migrate Android Code" dışında herhangi bir suggestion vermiyor.