0

我是 Android 新手,想将一些文本从片段传递到自定义视图。在我想用来canvas.drawText定位字符串的自定义视图中。我想使用的原因canvas.drawText是为了与某些图形的位置保持一致。

这是什么程序?

澄清一下,我的片段是这样的:

public class Fragment1 extends Fragment {

private TextView view;
private TextView txtBox;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container,false);
    txtBox = (TextView) view.findViewById(R.id.TxtBox);
            String myString = "testing";
            txtBox.setText(myString);
    return view;
    }
}

我有 View1 的 fragment_layout.xml 文件(我的自定义视图):

<com.example.stuff.View1
    android:id="@+id/TxtBox"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我希望在自定义视图中进行的调用:

public class View1 extends TextView {

    //constructors:
    public View1(Context context, AttributeSet ats, int ds) {
        super(context, ats, ds);
        init();
    }

    public View1(Context context) {
        super(context);
        init();
    }

    public View1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
...
canvas.drawText(myString, margin1, margin2, paint);
....
}

...而我想要的是myString从 Fragment1.java 到 View1.java。

4

2 回答 2

1

您可以动态创建com.example.stuff.View1自定义视图,即不要在 xml 中添加它,而是使用代码添加它。然后你可以constructorcom.example.stuff.View1.
其他方法可能是在com.example.stuff.View1类中创建一个方法并在那里设置文本。例如

public class View1 extends TextView {

    //constructors:
    public View1(Context context, AttributeSet ats, int ds) {
        super(context, ats, ds);
        init();
    }

    public View1(Context context) {
        super(context);
        init();
    }

    public View1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public void setMyText(String string) {
        myString=string;
    }
...
canvas.drawText(myString, margin1, margin2, paint);
....
}

然后在你的代码中做这样的事情

View view = inflater.inflate(R.layout.fragment_layout, container,false);
    txtBox = (TextView) view.findViewById(R.id.TxtBox);
    String myString = "testing";
    txtBox.setMyText(myString);
于 2013-02-15T08:17:02.713 回答
0

我能够通过我在此处(使用 setter/getter)此处(从错误定义的布局调用中消除由此产生的 NullPointer 异常)收到的答案来解决问题。

于 2013-02-17T00:01:02.277 回答