Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段之后添加方法_Java_Android_Android Fragments_Android Fragmentactivity - Fatal编程技术网

Java 在片段之后添加方法

Java 在片段之后添加方法,java,android,android-fragments,android-fragmentactivity,Java,Android,Android Fragments,Android Fragmentactivity,我有一个片段,它是一个“计时器”,我可以在任何地方添加它。在片段中,我通过编程更改了一个文本视图,它运行得很好。我的问题是当涉及到使用构造器膨胀的布局中的视图时(不确定这是否是正确的术语),在它下面的另一个方法中 public class Timer_fragment extends android.support.v4.app.Fragment { int testpins; String testedpin; TextView text; @Override pu

我有一个片段,它是一个“计时器”,我可以在任何地方添加它。在片段中,我通过编程更改了一个文本视图,它运行得很好。我的问题是当涉及到使用构造器膨胀的布局中的视图时(不确定这是否是正确的术语),在它下面的另一个方法中

public class Timer_fragment extends android.support.v4.app.Fragment {
    int testpins;
    String testedpin;
    TextView text;  
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.timer_frag, container, false);

    TextView text = (TextView) v.findViewById(R.id.pwd_status);
    text.setText("Setting text in fragment not main");
    /* set the TextView's text, click listeners, etc. */
    updateStatus();
    return v;
}
所有这些代码都可以正常工作,但当我尝试添加此方法时:

private void updateStatus() {
            TextView text = (TextView) findViewById(R.id.pwd_status);
            testPin();

            text.setText(testedpin);                         
        }
我在findViewById下面得到一条红线,表示类型Timer\u fragment的findViewById(int)方法未定义

我考虑过在我所有的方法中扩大视图而不返回它们,但这肯定会以某种方式影响性能,对吗

在使用视图之前,我刚刚尝试膨胀布局,但是我在单词
充气器
容器
上得到一个错误,表示它们无法解决


我这样做正确吗?

活动提供了“findViewById”方法。当这个类扩展片段时,除非您向片段提供活动,否则您将无法访问与活动相关的方法调用。退房:)

基本上,将活动实例传递给计时器\u片段:

private final Activity _activity;

Timer_fragment(Activity activity)
{
    _activity = activity;
}
...

private void updateStatus()
{
    TextView text = (TextView) _activity.findViewById(R.id.pwd_status);
    testPin();

    text.setText(testedpin);                         
} 

或者从正在使用的活动中设置视图的文本,而不是从计时器类中设置文本。

方法“findViewById”由活动提供。当这个类扩展片段时,除非您向片段提供活动,否则您将无法访问与活动相关的方法调用。退房:)

基本上,将活动实例传递给计时器\u片段:

private final Activity _activity;

Timer_fragment(Activity activity)
{
    _activity = activity;
}
...

private void updateStatus()
{
    TextView text = (TextView) _activity.findViewById(R.id.pwd_status);
    testPin();

    text.setText(testedpin);                         
} 

或者从正在使用的任何活动中设置视图的文本,而不是从计时器类中设置文本。

您的片段范围中已经有一个名为
text
的成员变量。不要在方法中重新声明它,只需分配它

text = (TextView) v.findViewById(R.id.pwd_status);


在片段的作用域中已经有一个名为
text
的成员变量。不要在方法中重新声明它,只需分配它

text = (TextView) v.findViewById(R.id.pwd_status);


只需将
findViewById
替换为
getActivity().findViewById


findViewById方法是在Activity类中定义的。片段不是活动。但是片段可以使用getActivity方法获取对将其添加到屏幕的活动的引用。

只需将
findViewById
替换为
getActivity().findViewById


findViewById方法是在Activity类中定义的。片段不是活动。但是片段可以使用getActivity方法获得对将其添加到屏幕的活动的引用。

因为我将重用这个片段,并且它还有很多其他方法。您是否建议我只为我拥有的所有其他方法传递实例?如果您将实例传递到构造函数中,Timer_Fragment类将通过成员变量在其所有方法中访问它(之后您不必传递它)。然而,这一切都是关于你想做什么。你需要多久调用一次updateStatus():你能利用@Sparky的答案在其他地方做这项工作吗?因为我将重用这个片段,它还有很多其他方法。您是否建议我只为我拥有的所有其他方法传递实例?如果您将实例传递到构造函数中,Timer_Fragment类将通过成员变量在其所有方法中访问它(之后您不必传递它)。然而,这一切都是关于你想做什么。你需要多久调用一次updateStatus():你能利用@Sparky的答案在别处做这项工作吗?是的,我的问题是访问视图。是的,我的问题是访问视图。是的!!这是非常有帮助的回答是的!!这是非常有用的答案