0

これは私の Activity クラスです。ここに Textview があります。
View Class から 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 Text を設定します。このテキストをアクティビティに設定できません。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

こうすれば

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

   }

}

CustomView.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

あなたの問題は、アクティビティ クラスにコンテキストがあり、2 番目のクラスにはコンテキストがないことです。これを解決するには、グローバル変数を作成しますstatic Activity activity。コンストラクターで初期化します。

次に、次のように呼び出しますnew CustomClass(ActivityClass.this)

次は、アクティビティに関連する何かをしたいときはいつでもactivity.、ものの前に置くだけです

于 2013-09-19T13:49:51.540 に答える