【问题标题】:FindViewById is undefined?FindViewById 未定义?
【发布时间】:2013-02-22 07:54:57
【问题描述】:

您好,我在函数中定义 findViewById 时遇到问题。以下是我的功能:

if(test.mStartedWalking == false){
        TextView myText = (TextView) findViewById (R.id.myText); 
        myText.append (lsNow + '\n');
        test.mStartedWalking = true;
}

我收到一条错误消息:方法 findViewById(int) 未为 StepDisplayer 类型定义,我很确定这是因为我的类没有扩展 Activity 类型。但是,我该如何纠正呢?该类实现了这一点:

public class StepDisplayer implements StepListener, SpeakingTimer.Listener

我无法扩展活动,因为我知道 Java 只能扩展一个类或可以实现多个接口。可能有人知道如何解决这个问题吗?如果是这样那就太好了!谢谢!

【问题讨论】:

  • 当您创建StepDisplayer 的实例时,您可以将CurrentActivity 的引用传递给此类...假设您是从Activity 类创建实例..
  • 将上下文从您的活动类传递给 StepDisplayer 并在 StepDisplayer 中使用。

标签: android class extend countdowntimer


【解决方案1】:

在 Java 中,您的类可以扩展单个类并实现多个接口。由于您的类StepDisplayer 仅实现StepListenerSpeakingTimer.Listener 接口,您可以使其扩展Activity 类。

例如:

public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener

如果由于任何原因您无法执行此操作,您可以从调用 StepDisplayer 中所述方法的 Activity 类中传递 Context,并使用它来调用 findViewById 方法。

yourMethodInStepDisplayerClass(IAmCallingStepDisplayerActivity.this);

【讨论】:

  • 所以你可以实现和扩展一个类?你介意举个例子吗?
【解决方案2】:

findViewById() 方法在Activity 类中可用。因此,如果您的类没有扩展 Activity,您应该将 Activity 上下文传递给您要调用 findViewById() 的类。然后只需调用

context.findViewById(int id) ;

:-)

【讨论】:

    【解决方案3】:

    改成

    public class StepDisplayer extends Activity implements StepListener, SpeakingTimer.Listener
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      相关资源
      最近更新 更多