【问题标题】:Non Static Method says its static?非静态方法说它是静态的?
【发布时间】:2017-04-30 07:51:20
【问题描述】:

我尝试在(对我而言)非静态方法中使用非静态方法,但他只说我不能在静态方法中使用非静态方法...

我不知道我应该尝试什么,所以我只是问。

线路有问题

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

    }
}

【问题讨论】:

  • 为什么方法名和类名一样? CountRassen 不是静态的,所以你不能做 Rassen.ContentRassen()... 你需要一个 Rassen 的实例
  • 我认为您要搜索的关键字是“this”,它指的是当前对象。只需用它替换 Rasse 或 Rassen

标签: java android class


【解决方案1】:

好吧,您正在使用类而不是对象来访问该方法。

如果您想通过类名访问该方法,则需要将该方法定义为静态方法,如下所示

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

对于非静态 - 您需要创建实例,然后使用实例对象调用方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2020-12-27
    相关资源
    最近更新 更多