2016-05-13 101 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 {...}'塊中對它進行操作。 –