2016-03-21 47 views
-3

我是新的android工作室,我試着做一個測試,推兩個不同的按鈕顯示Textview中的不同文本。 而我的.java代碼view.onclicklistener無法實現

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"); 
     } 
    } 

符號 'T1' 不能在

t1.setText("Customer1"); 

import android.view.View.OnClickListener; 

解決顯示未使用的import語句。 我想知道哪個部分是錯誤的代碼,以及如何解決它。

Thx

+0

請參閱下面的答案。 –

回答

2

您已經編寫了onClickLister方法,但是您尚未實現該接口。

嘗試修改此

public class MainActivity extends AppCompatActivity 

爲了這

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

並實行onClick(View v)在類方法代替你onClickListener

關於T1的問題。您收到錯誤的共振是因爲您將t1聲明爲局部變量。將t1移到一個全局變量,這應該可以解決問題。像這樣

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

非常感謝。但仍然無法解析t1.setText(「Custom2」)中的符號't1';我alreday更改我的代碼 – Albert

+0

@Albert我改變了我的答案,包括這 –

+0

最後的工作。非常感謝,安迪。 – Albert

1

實現OnClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

集偵聽器,以你的觀點t1.setOnClickListener(this);

和你的代碼添加到的onClick()

@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

謝謝,OnClickListener已實施,但仍無法解析t1.setText(「Custom2」)中的符號't1'; – Albert

+0

在Class級別聲明t1(onCreate()外部) –

0

使用任一種方法。

要麼實現接口

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; 
       } 
    } 
} 

或創建一個對象View.OnClickListener

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); 
    } 
} 

更新:

申報的TextView T1作爲類成員變量。您將其聲明爲局部變量,因此在onClick方法中不可用