Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 在for循环中仅渲染第一个RelativeLayout_Java_Android Studio - Fatal编程技术网

Java 在for循环中仅渲染第一个RelativeLayout

Java 在for循环中仅渲染第一个RelativeLayout,java,android-studio,Java,Android Studio,我试图创建几个RelativeLayout,每个都有两个文本视图,使用“for”循环,并将这些RelativeLayout插入LinearLayout中,使用addView以id选择,但只渲染第一个RelativeLayout。在线性布局之后,我在布局中有一个按钮。该按钮也不会被渲染。你能帮我识别代码中的错误吗?Logcat在渲染时不显示任何错误。多谢各位 MainFragment.java: public class MainFragment extends Fragment { D

我试图创建几个RelativeLayout,每个都有两个文本视图,使用“for”循环,并将这些RelativeLayout插入LinearLayout中,使用addView以id选择,但只渲染第一个RelativeLayout。在线性布局之后,我在布局中有一个按钮。该按钮也不会被渲染。你能帮我识别代码中的错误吗?Logcat在渲染时不显示任何错误。多谢各位

MainFragment.java:

public class MainFragment extends Fragment {

    DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy, EEEE");
    Date date = new Date();
    String[] timeNames;

    public static MainFragment newInstance() {
        return new MainFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_main, container, false);
        TextView textView = view.findViewById(R.id.date0);
        textView.setText(dateFormat.format(date));
        timeNames = getResources().getStringArray(R.array.time_names);

        LinearLayout parentToday = view.findViewById(R.id.today_times);
        RelativeLayout newRelativeLayout;
        TextView newTextView;
        for (int i = 0; i < 6; i++) {
            newRelativeLayout = new RelativeLayout(getContext());
            newRelativeLayout.setLayoutParams(new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.MATCH_PARENT));
            newTextView = new TextView(getContext());
            newTextView.setText(timeNames[i]);
            newTextView.setLayoutParams(new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.MATCH_PARENT));
            newRelativeLayout.addView(newTextView);
            newTextView = new TextView(getContext());
            newTextView.setText("00:00");
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.MATCH_PARENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            newTextView.setLayoutParams(params);
            newRelativeLayout.addView(newTextView);
            parentToday.addView(newRelativeLayout);
        }

        return view;
    }

}
public类MainFragment扩展片段{
DateFormat DateFormat=新的SimpleDateFormat(“dd MMMM yyyy,EEEE”);
日期=新日期();
字符串[]时间名;
公共静态MainFragment newInstance(){
返回新的MainFragment();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment_main,容器,假);
TextView TextView=view.findViewById(R.id.date0);
setText(dateFormat.format(date));
timeNames=getResources().getStringArray(R.array.time\u name);
LinearLayout parentToday=view.findViewById(R.id.today\u次);
RelativeLayout新RelativeLayout;
文本视图newTextView;
对于(int i=0;i<6;i++){
newRelativeLayout=newRelativeLayout(getContext());
newRelativeLayout.setLayoutParams(新的LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_内容,
LinearLayout.LayoutParams.MATCH_PARENT));
newTextView=newTextView(getContext());
setText(timeNames[i]);
newTextView.setLayoutParams(新的LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_内容,
LinearLayout.LayoutParams.MATCH_PARENT));
newRelativeLayout.addView(newTextView);
newTextView=newTextView(getContext());
newTextView.setText(“00:00”);
RelativeLayout.LayoutParams params=新的RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_内容,
RelativeLayout.LayoutParams.MATCH_PARENT);
params.addRule(RelativeLayout.ALIGN\u PARENT\u RIGHT);
newTextView.setLayoutParams(参数);
newRelativeLayout.addView(newTextView);
parentToday.addView(newRelativeLayout);
}
返回视图;
}
}
fragment_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingStart="10dp"
    android:paddingEnd="10dp">

    <TextView
        android:id="@+id/date0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="18sp" />
    <Button
        android:id="@+id/internet_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/internet_check"
        android:textSize="18sp" />
    <LinearLayout
        android:id="@+id/today_times"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    </LinearLayout>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Показать на неделю"
        android:textSize="18sp"/>

</LinearLayout>

我找到了解决办法。问题出在以下几行:

newTextView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.MATCH_PARENT));

我已将其更改为以下内容:

newTextView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));


问题解决后。

所有循环都被迭代,我已经用Toast检查过了。
newTextView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);