0

myActivity1 つの TextViewと、1 つのメソッドを持つmyTv別の Classを含むアクティビティがあります。myClassmodifyTv

メソッドをmyTv使用して値を変更するにはどうすればよいですか?modifyTv

class myActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myClass myc = new myClass();
    myc.modifyTv();// this line of code must be able to modify myTv value.

}
}
4

3 に答える 3

1

「myClass」では、アクティビティへの参照が必要になるため、呼び出すことができます

activity.findViewById(R.id.text_id)

コンストラクターでアクティビティを渡すか、let saysetCurrentActivityメソッドを作成することができますmyClass

TextViewまたは、それ自体への参照があるとさらに簡単です。

于 2013-08-14T18:59:00.347 に答える
1

さて、あなたはすることができます:

myc.modifyTv(myTextView);

変更する TextView をパラメーターとして渡すだけです。

于 2013-08-14T18:59:21.913 に答える
1

いくつかのオプションがあります:

1.コンストラクターに詳細情報を渡します。たとえば、ContextまたはmyTv. 例えば:

public class MyClass {
    Context context;
    public MyClass(Context context) {
        this.context = context;
    }
    public void modifyTv() {
        TextView tv = (TextView) context.findViewById(R.id.myTv);
        tv.setText("Foobar");
    }
}

次に、次のように呼び出します。

MyClass m = new MyClass(this);
m.modifyTv();

2.メソッドに詳細情報を渡しますmodifyTv()

public class MyClass {

    public void modifyTv(TextView tv) {
        tv.setText("Foobar");
    }
}

次に、次のように呼び出します。

MyClass m = new MyClass();
m.modifyTv((TextView) findViewById(R.id.tv));

3.あまり意味のないその他のより複雑な方法。

于 2013-08-14T19:01:27.777 に答える