Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向TextView/ScrollView添加字符串?_Java_Android_Textview_Scrollview - Fatal编程技术网

Java 如何向TextView/ScrollView添加字符串?

Java 如何向TextView/ScrollView添加字符串?,java,android,textview,scrollview,Java,Android,Textview,Scrollview,我是个新手,很抱歉 我想通过一个按钮将医生值作为字符串(名字、姓氏和以后的其他一些字符串)添加到滚动视图中,作为一个条目(我试图对对象执行此操作)。我知道我需要一个布局和一个文本视图来这样做,但我的虚拟机崩溃了。 据我所知,我必须把我的文本视图(带字符串)放在布局中,把布局放在滚动视图中(我错了吗?) 我在不同的网站上尝试了一些东西,这些网站都提供了类似的解决方案,但到目前为止没有任何效果。我将Android 6.0与Android studio结合使用,并使用设计视图设计了我的UI,并在XML

我是个新手,很抱歉

我想通过一个按钮将医生值作为字符串(名字、姓氏和以后的其他一些字符串)添加到滚动视图中,作为一个条目(我试图对对象执行此操作)。我知道我需要一个布局和一个文本视图来这样做,但我的虚拟机崩溃了。 据我所知,我必须把我的文本视图(带字符串)放在布局中,把布局放在滚动视图中(我错了吗?)

我在不同的网站上尝试了一些东西,这些网站都提供了类似的解决方案,但到目前为止没有任何效果。我将Android 6.0与Android studio结合使用,并使用设计视图设计了我的UI,并在XML文件中修改了一些代码

public void addDoctor(View view) {

    setContentView(R.layout.activity_main);
    // standard java class Doctor
    Doctor doc = new Doctor("Foo", "Boo");

    // this is the ScrollView I generated with the design
    ScrollView sv = (ScrollView) this.findViewById(R.id.ScrollViewDoctor);
    TextView tv = new TextView(this);
    // trying to fix the parent problem here
    if(tv.getParent() != null) {
        ((ViewGroup)tv.getParent()).removeView(tv); // <- fix
    }
    //this should be "Foo"
    tv.setText(doc.getDocName());

    // this is the layout I generated with the design "linlay"
    LinearLayout ll = (LinearLayout) this.findViewById(R.id.linlay);
    sv.addView(ll);

    //only one child object! -> in the error log
    ll.addView(tv);
    setContentView(view);
}
public void addDoctor(视图){
setContentView(R.layout.activity_main);
//标准java类医生
医生医生=新医生(“Foo”、“Boo”);
//这是我用设计生成的滚动视图
ScrollView sv=(ScrollView)this.findViewById(R.id.ScrollViewDoctor);
TextView tv=新的TextView(此);
//正在尝试修复此处的父级问题
if(tv.getParent()!=null){
((ViewGroup)tv.getParent()).removeView(tv);//在错误日志中
ll.addView(电视);;
setContentView(视图);
}
我希望对象的字符串出现在Scroll视图中,但错误日志显示“ScrollView只能承载一个直接子对象”,我试图用if语句修复该子对象,但它似乎不会影响我的代码

你能帮我一下吗?我错过什么了吗


谢谢!

删除
设置内容视图(视图);
最后,您已经在第一行设置了此布局

setContentView
在大多数情况下都应该在
onCreate
方法中调用一次。如果多次调用
setContentView
,则基本上超过了上一次调用

还有这个

if(tv.getParent() != null) {
    ((ViewGroup)tv.getParent()).removeView(tv); // <- fix
}
if(tv.getParent()!=null){

((ViewGroup)tv.getParent()).removeView(tv);//为什么不使用
RecyclerView
?这样就不需要滚动视图。也不需要调用setContentView(view);多次。只需执行一次操作。

您需要创建多行文本视图

<ScrollView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:layout_marginLeft="15dp"
       android:layout_marginRight="15dp"
       android:layout_marginTop="20dp"
       android:fillViewport="true">

       <TextView
           android:id="@+id/txtquestion"
           android:layout_width="fill_parent"
           android:layout_height="match_parent"
           android:background="@drawable/abs__dialog_full_holo_light"
           android:lines="20"
           android:scrollHorizontally="false"
           android:scrollbars="vertical"
           android:textSize="15sp" />

   </ScrollView>

据我所知,我必须把我的文本视图(带字符串)放在布局中,把布局放在滚动视图中(我错了吗?)

你说得对

<ScrollView>
   <LinearLayout>
     <TextView></TextView>
   </LinearLayout>
</ScrollView>
您可以通过以下方式实现您的目标:

public class MyActivityDoctors extends Activity {

    ScrollView sv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sv =  (ScrollView) this.findViewById(R.id.ScrollViewDoctor);
    }

    public void addDoctor(Doctor doctor)
    {
        //Linear Layout inside your ScrollView
        LinearLayout ll = (LinearLayout) this.findViewById(R.id.linlay);

        //Create a new TextView with doctor data
        TextView tv = new TextView(this);
        tv.setText(doctor.getDocName());

        //Adding textView to LinearLayout
        ll.addView(tv);
    }

}

我想我必须这样做,因为我想更新滚动视图。我按照你说的做了,但它仍然会与“ScrollView只能承载一个直接子对象”崩溃。在
onCreate
put
setContentView(R.layout.activity_main);
,然后在下面一行使用
findViewById
获取
ScrollView
,并“全局”存储它。最好将
LinearLayout
放入XMLs
ScrollView
,保留对它的引用,并将
TextView
s添加到其中。在一个
活动的生命周期中,不要多次调用
setContentView
。谢谢,我将在接下来必须完成的任务中提到这一点!问题是我甚至无法插入一个元素。日志中的父/子元素总是有问题。使用recyclerview更容易实现和维护。正如我之前提到的,我对Android非常陌生,所以我想从更基本的开始,但一旦我取得进展,我将尝试使用recyclerview!谢谢!
public class MyActivityDoctors extends Activity {

    ScrollView sv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sv =  (ScrollView) this.findViewById(R.id.ScrollViewDoctor);
    }

    public void addDoctor(Doctor doctor)
    {
        //Linear Layout inside your ScrollView
        LinearLayout ll = (LinearLayout) this.findViewById(R.id.linlay);

        //Create a new TextView with doctor data
        TextView tv = new TextView(this);
        tv.setText(doctor.getDocName());

        //Adding textView to LinearLayout
        ll.addView(tv);
    }

}