Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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
Android:如何将充气布局和非充气布局结合起来?_Android_Layout_Inflate - Fatal编程技术网

Android:如何将充气布局和非充气布局结合起来?

Android:如何将充气布局和非充气布局结合起来?,android,layout,inflate,Android,Layout,Inflate,在我的活动中,我想在顶部显示一些文本视图,然后在其下方膨胀一个列表视图。我尝试了各种方法,但都没有成功,例如addview(),但无法使其工作。我的膨胀视图成为主布局 任何帮助都将不胜感激。 基于Ted Hopp解的LogCat错误 10-20 02:38:38.322:D/AndroidRuntime(1253):关闭虚拟机 10-20 02:38:38.322:W/dalvikvm(1253):threadid=3:线程退出时出现未捕获异常(组=0x4001b188) 10-20 02:38

在我的活动中,我想在顶部显示一些文本视图,然后在其下方膨胀一个列表视图。我尝试了各种方法,但都没有成功,例如addview(),但无法使其工作。我的膨胀视图成为主布局

任何帮助都将不胜感激。 基于Ted Hopp解的LogCat错误

10-20 02:38:38.322:D/AndroidRuntime(1253):关闭虚拟机 10-20 02:38:38.322:W/dalvikvm(1253):threadid=3:线程退出时出现未捕获异常(组=0x4001b188) 10-20 02:38:38.322:E/AndroidRuntime(1253):未捕获处理程序:由于未捕获异常而退出主线程 10-20 02:38:38.342:E/AndroidRuntime(1253):java.lang.RuntimeException:无法启动活动组件信息{com.example.myCourseTime/com.example.myCourseTime.MyCourses}:java.lang.IllegalStateException:无法将头视图添加到列表中--已调用setAdapter。 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 10-20 02:38:38.342:E/AndroidRuntime(1253):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.app.ActivityThread.access$2200(ActivityThread.java:119) 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.os.Handler.dispatchMessage(Handler.java:99)上 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.os.Looper.loop(Looper.java:123)上 10-20 02:38:38.342:E/AndroidRuntime(1253):位于android.app.ActivityThread.main(ActivityThread.java:4363) 10-20 02:38:38.342:E/AndroidRuntime(1253):位于java.lang.reflect.Method.Invokenactive(本机方法) 10-20 02:38:38.342:E/AndroidRuntime(1253):位于java.lang.reflect.Method.invoke(Method.java:521) 10-20 02:38:38.342:E/AndroidRuntime(1253):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 10-20 02:38:38.342:E/AndroidRuntime(1253):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 10-20 02:38:38.342:E/AndroidRuntime(1253):在dalvik.system.NativeStart.main(本机方法) 10-20 02:38:38.342:E/AndroidRuntime(1253):原因:java.lang.IllegalStateException:无法将头视图添加到列表中--已调用setAdapter。 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.widget.ListView.addHeaderView(ListView.java:256)上 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.widget.ListView.addHeaderView(ListView.java:279) 10-20 02:38:38.342:E/AndroidRuntime(1253):在com.example.mycourseTimeline.MyCourses.onCreate(MyCourses.java:30) 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)上 10-20 02:38:38.342:E/AndroidRuntime(1253):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 10-20 02:38:38.342:E/AndroidRuntime(1253):。。。还有11个 10-20 02:38:38.382:I/dalvikvm(1253):线程ID=7:对信号3作出反应 10-20 02:38:38.382:E/dalvikvm(1253):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝 10-20 02:38:47.463:I/进程(1253):发送信号。PID:1253信号:9

活动我的课程

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/main" >

    <Button
        android:id="@+id/labelAddCourseButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="addCourseButton"
        android:padding="10dp"
        android:text="@string/CourseName" />

</LinearLayout>

列表课程

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >



    <TextView
        android:id="@+id/labelModuleCode"
        android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:layout_marginLeft="10dp"
        android:text="@string/CourseName"
        android:textSize="10dp" />

     <TextView
        android:id="@+id/labelCourseType"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/CourseType"
        android:layout_marginLeft="10dp"
        android:textSize="10dp" />
</LinearLayout>

代码

公共类MyCourses扩展了ListActivity{
静态最终字符串TEST=“com.example.myCourseThedule.TEST”;
字符串[]模块;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout main=(LinearLayout)this.findViewById(R.id.main);
MODULE=getResources().getStringArray(R.array.MODULE);
setListAdapter(新ListArrayAdapter(此模块));
}
公共无效addCourseButton(查看addCourseButton)
{
意向意向=新意向(此,AddCourse.class);
星触觉(意向);
}
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id)
{
super.onListItemClick(左、右、位置、id);
试一试{
Class test=Class.forName(“com.example.myCourseThedule.AddCourse”);
意向意向=新意向(MyCourses.this,test);
TextView TextView=(TextView)v.findViewById(R.id.labelModuleCode);
字符串模块=textView.getText().toString();
意图.额外(测试、模块);
星触觉(意向);
}   
catch(classnotfounde异常)
{
e、 printStackTrace();
}
}
}
类ListArrayAdapter扩展了ArrayAdapter
{
//您只需要一份LayoutInflater
私人充气机;
//创建ArrayAdpater
公共ListArrayAdapter(上下文,字符串[]测试)
{
超级(上下文、R.layout.activity\u my\u课程、测试);
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视窗座;
if(convertView==null){
//为每行充气所需的布局
convertView=充气机。充气(R.layout.listcourses,父级,false);
holder=新的ViewHolder();
holder.code=(TextView)convertView.findViewById(R.id.labelModuleCode);
holder.type=(TextView)convertView.findViewById(R.id.labelCourseType);
//为你的按钮添加一个链接,并在这里定义它的OnClickListener,最终。。。
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
字符串模块=getItem(位置);
//将文本设置为基于的字符串值
public class MyCourses extends ListActivity {

    static final String TEST = "com.example.mycoursetimetable.TEST";
    String [] MODULE;

        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
        super.onCreate(savedInstanceState);

        LinearLayout main = (LinearLayout)this.findViewById(R.id.main);
        MODULE = getResources().getStringArray(R.array.module);
        setListAdapter(new ListArrayAdapter(this,MODULE));
        }



        public void addCourseButton (View addCourseButton) 
        {
         Intent intent = new Intent(this,AddCourse.class);
         startActivity(intent);
        }

        protected void onListItemClick(ListView l, View v, int position, long id)
        {
          super.onListItemClick(l, v, position, id);


        try {
            Class test = Class.forName("com.example.MyCourseTimeTable.AddCourse");
            Intent intent = new Intent(MyCourses.this, test);

            TextView textView = (TextView) v.findViewById(R.id.labelModuleCode);
            String module = textView.getText().toString();


            intent.putExtra(TEST,module);
            startActivity(intent);
            }   
                catch (ClassNotFoundException e)
                {
                e.printStackTrace();
                }

        }

}

class ListArrayAdapter extends ArrayAdapter<String> 
{
    //  You only need one copy of LayoutInflater
    private final LayoutInflater inflater;

    //create the ArrayAdpater
    public ListArrayAdapter(Context context, String[] test) 
    {
        super(context, R.layout.activity_my_courses, test);
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ViewHolder holder;
        if(convertView == null) {


            // Inflate the layout that you want for each row


            convertView = inflater.inflate(R.layout.listcourses, parent, false);

            holder = new ViewHolder();
            holder.code = (TextView) convertView.findViewById(R.id.labelModuleCode);
            holder.type = (TextView) convertView.findViewById(R.id.labelCourseType);

            // Add a link for your button as well and define its OnClickListener here to, eventually...

            convertView.setTag(holder);
        }
        else 
            holder = (ViewHolder) convertView.getTag();

        String module = getItem(position);
        //set the text to the string values based on position
        holder.code.setText(module);

        //return the layout
        return convertView;
    }

    class ViewHolder {
        TextView code;
        TextView type;
    }
}
public class MyCourses extends ListActivity {

    static final String TEST = "com.example.mycoursetimetable.TEST";
    String [] MODULE;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        MODULE = getResources().getStringArray(R.array.module);
        getListView().addHeaderView(getHeader()); // must come before next line
        setListAdapter(new ListArrayAdapter(this,MODULE));
    }

    private View getHeader() {
        LayoutInflater inflater =
            (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        return inflater.inflate(R.layout.listcourses, null);
    }
    . . .
}