2016-05-13 392 views
1

我对我有一个很奇怪的问题。我有点儿是初学者。无法从片段内部访问公共类的方法

基本上,我正在关注的tutorial

但我想创建一个实际的类,播放器,而不是使用字符串数组喜欢这个视频确实笔者。

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

当我简单地创建类的实例,玩家从片段里面,我不能随后访问它从内同样的方法分段。当我尝试这样的:

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做同样的事情,它工作正常。如果它可以创建类实例在片段内部,为什么不能访问该实例的方法?

这里是我的类播放器代码:

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

}

+0

移动'P0001.setName( “”);'里面'onCreateView'或其他功能 –

+0

调用'P0001.setName( “”);'方法的任何方法 –

+1

为什么downvote里面? OP是一个有问题的初学者。你不能因此而使他失望!他的问题对我来说很好。 –

回答

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

您也可以在另一种方法中调用'P0001.setName(“”);''。关键在于,当你打电话时,你必须采用一种方法。除非'P0001'是静态的,然后你可以在'static {...}'块中对它进行操作。 –

相关问题