2016-12-14 118 views
-5

我試圖在非靜態方法中使用非靜態方法,但他只說我不能使用非靜態方法而不是靜態方法...非靜態方法說它的靜態?

我不知道是什麼我應該嘗試,所以我只是問。

問題在該行

public void Rassen(View v){ 
    Rassen.ContentRassen(); 
} 

這裏是一些代碼:

package thetruenerathul.pathfinder001; 


import android.os.Bundle; 

import android.support.v7.app.AppCompatActivity; 

import android.view.View; 

import android.widget.EditText; 


import thetruenerathul.pathfinder001.NewCharacter.Rassen; 


import static thetruenerathul.pathfinder001.R.layout.rassen; 



public class Pathfinder extends AppCompatActivity { 

    public static String[] Charakter = new String[3]; 

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

    public void NewCharacter(View v){ 

     setContentView(R.layout.name); 
    } 

    public void ContentName(View v){ 

     EditText Name = (EditText)findViewById(R.id.TfName); 
     Charakter[0] = Name.getText().toString(); 
     setContentView(rassen); 

    } 

    public void Rassen(View v){ 
     Rassen.ContentRassen(); 
    } 

    public void ContentZurueck(View v){ 
     setContentView(R.layout.activity_pathfinder); 
    } 

} 

和ContentRassen()的代碼

public class Rassen extends AppCompatActivity { 

    public void ContentRassen(View View){ 

     Rasse(View); 
     setContentView(R.layout.klassen); 

    } 

    private void Rasse(View View){ 

     Button Rasse; 

     switch(View.getId()) 
     { 
      case R.id.BtZwerg: 
       Rasse = (Button)findViewById(R.id.BtZwerg); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtHalbling: 
       Rasse = (Button)findViewById(R.id.BtHalbling); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtElf: 
       Rasse = (Button)findViewById(R.id.BtElf); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtMensch: 
       Rasse = (Button)findViewById(R.id.BtMensch); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtGnom: 
       Rasse = (Button)findViewById(R.id.BtGnom); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtHalbOrk: 
       Rasse = (Button)findViewById(R.id.BtHalbOrk); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 

      case R.id.BtHalbElf: 
       Rasse = (Button)findViewById(R.id.BtHalbElf); 
       Pathfinder.Charakter[1] = Rasse.getText().toString(); 
       break; 
     } 

    } 
} 
+1

爲什麼命名方法與該類相同? 'CountRassen'不是靜態的,所以你不能做'Rassen.ContentRassen()'...你需要一個'Rassen'的實例 – Li357

+0

我認爲你正在搜索的關鍵字是'this',它是指當前目的。只需用它替換Rasse或Rassen – RoiEX

回答

0

好了,你正在訪問使用類中的方法不是按對象。

如果您要訪問的類名的方法,那麼你需要定義一個方法,靜態像下面

public static void ContentRassen(View View){ 
    Rasse(View); 
    setContentView(R.layout.klassen); 
} 
Rassen.ContentRassen(); 

對於非靜態的 - 你需要創建一個實例,然後使用該實例調用方法Object