无法从内部片段访问公共类的方法

时间:2016-05-13 07:18:26

标签: android android-fragments methods

我有一个非常奇怪(对我而言)的问题。我有点像初学者。

基本上,我跟随tutorial

但我想创建一个真正的类,Player,而不是像这个视频的作者那样使用字符串数组。

但在这样做时,我遇到了这个奇怪的问题......

当我只是从Fragment中创建一个Class,Player的实例时,我无法从同一个片段内部访问它的方法。当我想要这样的时候:

package com.tba.excercise_tabbed_lists;


import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Frag_Fave extends ListFragment {

Player P0001 = new Player();
Player P0002 = new Player();
Player P0003 = new Player();
Player P0004 = new Player();

P0001.setName("");


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


    View rootView = inflater.inflate(R.layout.list_layout_favorites, container, false);


    return rootView;
}
}

... Android Studio高亮显示setName为红色,并说“"无法解析符号' setName'。

这似乎是如此基本和奇怪。我确定它有些愚蠢,但我已经研究过,似乎找不到类似的Q / A让我理解。

我可以从我的MainActivity做同样的事情,它工作正常。如果它可以从Fragment中创建类实例,那么为什么它不能访问该实例的方法???

以下是我的Player类代码:

package com.tba.excercise_tabbed_lists;


public class Player {

private String name;

public Player(){

}


public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

2 个答案:

答案 0 :(得分:3)

尝试,

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


      View rootView = inflater.inflate(R.layout.list_layout_favorites, container, false);

           P0001.setName("");

      return rootView;
}

答案 1 :(得分:2)

请检查您的代码,OOPS概念永远不允许分配外部方法, 您可以在方法外声明或赋值,但不能在方法外调用方法。

所以尝试下面的代码,希望它能运作。

//P0001.setName("");   comment this outside and write it in method

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

   View rootView = inflater.inflate(R.layout.list_layout_favorites, container, false);

   P0001.setName("");
   return rootView;
}