0

我有一个扩展 Activity 并解析 xml 文件的类。我想要的 xml 文件中的文本作为参数传递给 java 类。我遇到的问题是,在java类中我想从资源布局文件夹中引用android TextViews,这样我就可以将文本设置为我传入的字符串参数。我想我可以从Activity扩展java类或作为一个传入争论当前的活动......他们是唯一引用资源/布局中的文件吗?

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

4 回答 4

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);
    }
于 2012-06-13T15:39:54.800 回答
0

调用该方法后,您可以使用该findViewById(R.id.myResId)方法找到您的视图setContentView(R.layout.myLayout);

如果要将文本设置为 aTextView可以((TextView) findViewById(R.id.myResId)).setText(R.string.myText);直接使用。

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

但这迟早容易导致上下文泄漏。解决您的问题的更好方法是为您的文本设置一个 getter,并从托管视图的Activityor中设置它。Fragment

于 2012-06-13T15:35:40.083 回答
0
TextView yourTextView = (TextView)findViewById(R.id.yourTextViewId);
yourTextView.setText(yourText);
于 2012-06-13T15:37:30.510 回答
0

在您的布局 xml 中,找到 textview 并设置:

android:id = "lorem"

然后在你的活动课上:

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

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

然后:

txt.setText(arg1);
于 2012-06-13T15:38:21.773 回答