2011-11-15 137 views
1

我在Android中有一个View,它有一个存储x和y值的onTouchEvent。在我的活动中,我有两个TextView,我最初设置为0,但每次点击视图时都想更新它们。如何更新Android中的TextView文本?

有人可以解释如何做到这一点?

编辑

我的动态显示3个不同的观点和视图中的一个具有的onTouchEvent看什么x和y的立场是,如果它被点击。

public class MyActivity extend Activity { 
    //LinearLayouts created to hold the Views 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //add buttons 
     for(Button b : myButtons) { 
      buttonLayout.addView(b); 
     } 

     clickLayout.addView(clickView); //ClickView is where I use the onTouchEvent and want to get the values from 

     for(TextView tv : myTextViews) { 
      //This is where I would like to set the text 
      //It needs to update every time the ClickView's onTouchEvent happens 
      textLayout.addView(tv); 
     } 
    } 
} 

如果我的ClickView源是必要的,让我知道,我会抛出它。然而,它只是得到了X和Y.但是我希望有一种方法可以让我的Activity获得ClickView的onTouchEvent的方法。

如果没有其他方式提到这些,我会继续前进,并将其标记为已解决,因为上述选项可行,只是稍微复杂一些。

回答

1
中的onTouchEvent使用

这个伪代码

textViewX.setText(String.valueOf(motionEvent.getX())); 
textViewY.setText(String.valueOf(motionEvent.getY())); 
+0

谢谢你的回复,但正是我是问原因,TextViews是在Activity中创建,而不是在OnTouchEvent所在的View中创建。我应该在该视图中创建TextView并将它们传递给Activity? – StartingGroovy

+0

只需使用Activity中的onTouchEvent,或者您可以将TextView传递到您的自定义可触摸小部件。 –

+2

@StartingGroovy:你可以尝试Dan的建议,但是使用视图的getContext()方法并将它转换为你的活动类,比如((MyActivity)getContext())textViewX - TextViews需要是public。 – Squonk

1

做类似下面的...

public class MyActivity extends Activity 
    implements View.OnTouchListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     ... 

     // Set clickView's OnTouchListener to be handled 
     // by the onTouch(...) method of this Activity 
     clickView.setOnTouchListener(this); 
    } 

    @Override 
    public onTouch(View v, MotionEvent event) { 
     // The View parameter v will be the View that 
     // was touched if you have more than one to handle 
    } 
} 
+0

所以你建议改用Dan S提到的? – StartingGroovy

+0

是的,但是你似乎对他所暗示的以及如何去做,似乎有些困惑,我想我会给你一个例子。 – Squonk

+0

谢谢你的例子,非常感谢。既然丹先前提到过,我会继续前进,并且标记他的正确性,但也会赞扬你,因为你的每条评论/帖子都有帮助。如果我有任何问题,我会留下另一条评论。感谢您的时间MisterSquonk – StartingGroovy