【问题标题】:How to forward data from Activity class to View?如何将数据从 Activity 类转发到 View?
【发布时间】:2012-11-30 20:37:51
【问题描述】:

我创建了布局。我在那里添加了视图:

<app.test.application.EObrazView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

现在,例如用户正在单击按钮。在活动中正在执行正确的功能setOnClickListener。我想将有关它的信息发送到 View class app.test.application.EObrazView

如何做到这一点?如何在这些类之间共享信息?

编辑:

EObrazView view1;
view1 = (EObrazView) findViewById(R.id.myView);
[button on click listener]
view1.newImage(wo);

newImage();是 EObrazView 中的函数,我想在按下活动类中的按钮时使用它。 不幸的是,有一个错误:java.lang.NullPoniterException

【问题讨论】:

    标签: android view android-activity


    【解决方案1】:

    假设视图来自您,情况似乎如此。您必须在视图类中创建方法。

    然后在 XML 中为视图分配一个 id:

    android:id="@+id/myId"
    

    你会在活动中获得对这个视图的引用

    EObrazView view = (EObrazView)findViewById(R.id.myId);
    

    并且可以调用方法。

    【讨论】:

      【解决方案2】:

      将您的布局代码更改为:

      <app.test.application.EObrazView
          android:id="@+id/myView"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />
      

      然后,当您在 OnCreateActivity 中调用 setContentView 后,您可以通过调用 findViewById(R.id.myView).setOnClickListener() 来获得对该视图的引用

      如果您使用OnClickListener,当onClick 被调用时,您将获得对被点击视图的引用,然后您可以调用任何您喜欢的(公共)函数。

      如果我在一个 Activity 中有多个可点击视图,我希望我的 Activity 实现 OnClickListener,然后在 OnCreate 中为每个可点击视图调用 findViewById(R.id.someViewId).setOnClickListener(this),然后我使用如下 switch 语句:

      @Override
      public void onClick(View someView) {
          switch (someView.getId()){
               case someViewId:
                   //doing something such as call someView.someFunction()
                   break;
               case someOtherViewId:
                   //do something else!
                   break;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-12-28
        • 2013-09-27
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多