0

这是我的活动课。在这里,我有一个 Textview。
我想从视图类设置 TextView。

public class TestApp extends Activity 
{

  TextView   NameTxtView;
  CustomView  view;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.Main); 
         view                       = (CustomView)findViewById(R.id.customview);    

        NameTxtView  = (TextView) findViewById(R.id.nameTxtxVw);

   }

}

这是我的视图类。在这里,我想设置 TextView 文本。我无法在活动中设置此文本。因为我在 View 类上获得了价值。

public  class CustomView extends View
{
    public CustomView(Context context, AttributeSet attrs) 
    {
          super(context, attrs); 
    } 

    @Override
    public void onDraw(Canvas canvas) 
    {
          NameTxtView.settext("Test");

    }
}

任何想法如何做到这一点?

谢谢

4

3 回答 3

5

这样做

测试应用程序.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.example.demo.CustomView.CustmViewListener;

public class TestApp extends Activity 
{

  TextView   NameTxtView;
  CustomView  view;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.Main); 
         view   = (CustomView)findViewById(R.id.customview);    

        NameTxtView  = (TextView) findViewById(R.id.nameTxtxVw);

        view.setCustmViewListener(new CustmViewListener() {

            @Override
            public void onUpdateValue(String updatedValue) {
                NameTxtView.setText(updatedValue);
            }
        });

   }

}

自定义视图.java

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;

public class CustomView extends View {

    CustmViewListener custmViewListener;

    public CustmViewListener getCustmViewListener() {
        return custmViewListener;
    }

    public void setCustmViewListener(CustmViewListener custmViewListener) {
        this.custmViewListener = custmViewListener;
    }

    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onDraw(Canvas canvas) {
        if (getCustmViewListener() != null) {
            getCustmViewListener().onUpdateValue("passYourValueHere");
        }

    }

    public interface CustmViewListener {
        void onUpdateValue(String updatedValue);
    }
}
于 2013-09-19T12:35:17.270 回答
0

像这样尝试:在 CustomView 构造函数中调用 LayoutInflaterService 并为您的 Layout & TextView 传递 Id:

LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
final RelativeLayout yourLayout = (RelativeLayout) layoutInflater.inflate(R.layout.dialog_menu, null);
TextView myText = (TextView) yourLayout.findViewById(R.id.nameTxtxVw);
myText.setText("");
于 2013-09-19T12:20:01.653 回答
0

你的问题是活动类有一个上下文,而你的第二个没有。为了解决这个问题,创建一个全局变量:static Activity activity并在构造函数中初始化它。

然后调用:new CustomClass(ActivityClass.this)

接下来,每当您想做与活动相关的事情时,只需将其放在activity.前面

于 2013-09-19T13:49:51.540 回答