2016-03-21 12 views
-3

Android studio ile yeni oldum, bir test yapmayı denedim, iki farklı butonu Textview'de farklı bir metin göster. Ve .java koduview.onclicklistener uygulanamaz

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 
import android.view.View.OnClickListener; 
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TextView t1; 
     t1 = (TextView) findViewById(R.id.editText); 

     t1.setOnClickListener(this); 
    } 
    @Override 
    public void onClick (View v) { 
     if (v.getId() == R.id.button) 
      t1.setText("Customer1"); 
     if (v.getId() == R.id.button2) 
      t1.setText("Custom2"); 
     } 
    } 

Sembol 't1'

t1.setText("Customer1"); 

import android.view.View.OnClickListener; 

çözülmesi edilemez kullanılmayan import ifadesini gösterir. Kodda hangi parçanın yanlış olduğunu ve nasıl düzeltileceğini bilmek istiyorum.

Sen arayüzü uygulamayan ancak onClickLister yöntemi yazdım

+0

'da aşağıdaki yanıtlara bakınız. –

cevap

2

Thx. t1 sorunu konusunda senin onClickListener

yerine sınıfında bu

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

Ve uygulamak onClick(View v) yöntemiyle için bu

public class MainActivity extends AppCompatActivity 

değişen

deneyin. Hatayı aldığınıza göre, t1 yerel değişken olarak bildirilir. T1'i global bir değişken olarak taşıyın ve bu sorunu çözmelisiniz. Bu

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

public TextView t1; 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    t1 = (TextView) findViewById(R.id.editText); 
    t1.setOnClickListener(this); 
} 

@Override 
public void onClick (View v) { 
    if (v.getId() == R.id.button) 
     t1.setText("Customer1"); 
    if (v.getId() == R.id.button2) 
     t1.setText("Custom2"); 
    } 

}

+0

Çok teşekkürler. Ama hala t1.setText ("Custom2") 't1' sembolünü çözemez; ben değiştiniz kodumu değiştir – Albert

+0

@Albert Ive, bu –

+0

'u eklemek için cevabımı değiştirdim Son olarak iş. Çok sağol Andy. – Albert

1

gibi sizin bakış t1.setOnClickListener(this);

için OnClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

seti dinleyici uygulamak ve onClick() için kod eklemek

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.button) 
     t1.setText("Customer1"); 
    if (v.getId() == R.id.button2) 
     t1.setText("Custom2"); 
} 
+0

Teşekkürler, OnClickListener uygulandı ancak t1.setText ("Custom2") içindeki 't1' sembolünü çözemiyor; – Albert

+0

Sınıf düzeyinde t1 bildirme (onCreate() dışında –

0

Tek bir yaklaşım kullanın.

bir View.OnClickListener nesnesi arayüzünü

public class MainActivity extends AppCompatActivity implements{ 

    TextView t1; 

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

     t1 = (TextView) findViewById(R.id.editText); 

     t1.setOnClickListener(this); 
    } 

    //its onClick -> Not OnClickListener 
    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
        case R.id.button: 
         t1.setText("Customer1"); 
         break; 
        case R.id.button2: 
         t1.setText("Custom2"); 
         break; 
       } 
    } 
} 

uygulamak veya oluşturmak Ya

public class MainActivity extends AppCompatActivity { 

    TextView t1; 

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

     t1 = (TextView) findViewById(R.id.editText); 

     View.OnClickListener onclickListnere = new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       switch(v.getId()){ 
        case R.id.button: 
         t1.setText("Customer1"); 
         break; 
        case R.id.button2: 
         t1.setText("Custom2"); 
         break; 
       } 
      } 
     }; 

     t1.setOnClickListener(onclickListnere); 
    } 
} 

Güncelleme: sınıf üye değişkeni olarak

Declare TextView'un t1. Yerel bir değişken olarak ilan ettiniz ve bu nedenle onClick Method