2015-09-04 55 views
-1

我正在編寫此代碼並顯示錯誤非靜態方法getID()無法從靜態上下文中引用。 該錯誤是在開關(View.getID())錯誤:(56,21)錯誤:非靜態方法getId()不能從靜態上下文中引用

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

Button greetbutton; 

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

    greetbutton = (Button) findViewById(R.id.greetbutton); 
    greetbutton.setOnClickListener(this); 
} 

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

@Override 
public void onClick(View v) { 

    TextView textView = (TextView) findViewById(R.id.textView); 

    EditText editFreindname = (EditText) findViewById(R.id.editFriendname); 

    String freindname = editFreindname.getText().toString(); 

    switch (View.getId()) { 

     case R.id.greetbutton: 

      textView.setText(getString(R.string.greetstring) + freindname + "!"); 

      break; 

     default: 

      break; 
    } 

} 
} 

回答

0

getId()不是靜態方法。您需要在View類的實例上調用它。

例如,getId()這3個用途是有效的(EditText延伸TextView,延伸View):

editFreindname.getId() 
freindname.getId() 
v.getId() 
4

您需要在switch語句來代替ViewvView是該類的名稱,v是您試圖比較的變量。

0

你調用該方法,就好像它是靜態的,因爲你正在使用的類名調用它:

View.getId(); 

getId()是你不能從一個View調用非靜態方法。

嘗試

switch (v.getId()) { 

,而不是

switch (View.getId()) { 

我希望它能幫助!

1

請用v代替查看。

試試這個 v.getId()而不是View.getId():)

相關問題