从Java类中引用Android视图

时间:2012-06-13 15:23:35

标签: java android xml textview findviewbyid

我有一个扩展Activity并解析xml文件的类。我想要的文本在xml文件中作为参数传递给java类。我的问题是在java类中我想从资源Layout文件夹中引用android TextViews,所以我可以将文本设置为我传入的String参数。我想我可以从Activity扩展java类或作为一个传入参数当前活动...他们是唯一引用res / layout中的文件吗?

public class xmlClass extends Activity{
    //parse the xml    
    MyDataFile mdf = new MyDataFile(arg1, arg2, arg3, arg4);     
}

public class MyDataFile{
    public MyDataFile(arg1, arg2, arg3, arg4)
    {

    }    
    ******* Here I want to set the Text in a TextView to arg1;
}

4 个答案:

答案 0 :(得分:1)

我看到两个选项:

首先,要使MyDataFile成为您的Activity中的嵌套类,如下所示:

public class xmlClass extends Activity{

    //keep TextViews as member
    protected TextView mTextView

    public void onCreate(){
        ...
        setContentView(...)
        mTextView = (TextView)findViewById(R.id.your_text_id);

        //parse your XML
        MyDataFile mdf = new MyDataFile(arg1, arg2, arg3, arg4);
    }

    //make MyDataFile a nested class
    public class MyDataFile{

        public MyDataFile(String arg1,String arg2, ...){
            mTextView.setText(arg1);
        }
    }

第二个解决方案是将TextViews作为参数提供,就像在此构造函数

中一样
    public MyDataFile(String arg1, TextView textForArg1, ...){
        textForArg1.setText(arg1);
    }

答案 1 :(得分:0)

您可以在调用findViewById(R.id.myResId)方法后使用setContentView(R.layout.myLayout);方法查找视图。

如果您想将文字设置为TextView,可以直接使用((TextView) findViewById(R.id.myResId)).setText(R.string.myText);

如果您想从不属于自己Context的类中访问您的视图,可以在方法参数中传递上下文,然后调用context.findViewById(...)

但这很容易迟早导致Context泄漏。 解决问题的更好方法是为文本设置一个getter,并在托管视图的ActivityFragment内进行设置。

答案 2 :(得分:0)

TextView yourTextView = (TextView)findViewById(R.id.yourTextViewId);
yourTextView.setText(yourText);

答案 3 :(得分:0)

在你的布局xml上,找到textview并设置:

android:id = "lorem"

然后在你的活动课上:

TextView txt = (TextView) findViewById(R.id.lorem);

并以某种方式将txt传递给您的数据类。 (作为参数传递是有效的。)

然后:

txt.setText(arg1);