Android 从视图类设置文本视图文本,而不是从活动设置文本视图文本

Android 从视图类设置文本视图文本,而不是从活动设置文本视图文本,android,android-activity,textview,android-custom-view,Android,Android Activity,Textview,Android Custom View,这是我的活动课。这里有一个文本视图。 我想从View类设置TextView public class TestApp extends Activity { TextView NameTxtView; CustomView view; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

这是我的活动课。这里有一个文本视图。
我想从View类设置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);

   }

}
这是我的观点课。我想在这里设置文本视图文本。我无法将此文本设置为活动。因为我在视图类中获得了价值

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

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

    }
}
你知道怎么做吗

谢谢

试着这样做: 在CustomView构造函数中,调用LayoutFlaterService并传递布局和文本视图的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("");
试着这样做: 在CustomView构造函数中,调用LayoutFlaterService并传递布局和文本视图的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("");
这样做

TestApp.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);
            }
        });

   }

}
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);
    }
}
CustomView.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);
            }
        });

   }

}
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);
    }
}
这样做

TestApp.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);
            }
        });

   }

}
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);
    }
}
CustomView.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);
            }
        });

   }

}
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);
    }
}

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

然后调用:
newcustomclass(ActivityClass.this)


接下来,每当你想做一些与活动相关的事情时,只需将
活动放在stuff前面。
你的问题是活动类有上下文,而你的第二个没有上下文。要解决此问题,请创建一个全局变量:
static Activity
,并在构造函数中初始化它

然后调用:
newcustomclass(ActivityClass.this)



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

你如何使用CustomView?我已更新。我已经添加了这是xml。为什么您需要创建自定义视图主布局还不够?您可以在视图中使用接口实现来实现class@Biraj扎拉瓦迪亚,你怎么能解释一下。我是android新手。或者你能自己编辑我的问题吗?你是如何使用CustomView的?我更新了。我已经添加了这是xml。为什么您需要创建自定义视图主布局还不够?您可以在视图中使用接口实现来实现class@Biraj扎拉瓦迪亚,你怎么能解释一下。我是android新手。或者你可以编辑我的问题吗?编译时错误布局充气机服务无法解析为可变使用上下文。布局充气机服务编译时错误布局充气机服务无法解析为可变使用上下文。布局充气机服务谢谢回复,让我实现并查看行为。还有一个疑问:如果我将NameTxtView设置为静态并直接在CustomView上访问它,比如:TestApp.NameTxtView.settext(“Test”);这也是我的工作。。。问题是您必须用类名(例如TestApp.NameTxtView.setText…)定义该textview。因此,您的customclass将不会推广到应用程序中的所有活动。这将取决于此TestApp活动。感谢您的回复,让我实现并查看行为。还有一个疑问:如果我将NameTxtView设置为静态并直接在CustomView上访问它,比如:TestApp.NameTxtView.settext(“Test”);这也是我的工作。。。问题是您必须用类名(例如TestApp.NameTxtView.setText…)定义该textview。因此,您的customclass将不会推广到应用程序中的所有活动。这将仅取决于此TestApp活动。