Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 如何处理意图中的非静态成员?_Java_Android_Static - Fatal编程技术网

Java 如何处理意图中的非静态成员?

Java 如何处理意图中的非静态成员?,java,android,static,Java,Android,Static,在尝试制作Android应用程序时,我遇到了处理静态成员的巨大困难 以下是该应用程序必须执行的操作: 有两个选项卡,“我的类”和“类列表”,每个选项卡都是独立的意图。该应用程序的要点是,当您单击类列表中某个类旁边的“添加”按钮时,它应该会动态更新“我的类”下的列表。但是,我不能这样做,因为我保存类的数据结构是动态的,但是类列表的意图是静态的,所以我不断得到“不能从静态上下文引用非静态成员”错误 是否有任何方法可以使用动态意图,如果有,如何使用 编辑: 以下是声明意图的地方: public cla

在尝试制作Android应用程序时,我遇到了处理静态成员的巨大困难

以下是该应用程序必须执行的操作:

有两个选项卡,“我的类”和“类列表”,每个选项卡都是独立的意图。该应用程序的要点是,当您单击类列表中某个类旁边的“添加”按钮时,它应该会动态更新“我的类”下的列表。但是,我不能这样做,因为我保存类的数据结构是动态的,但是类列表的意图是静态的,所以我不断得到“不能从静态上下文引用非静态成员”错误

是否有任何方法可以使用动态意图,如果有,如何使用

编辑:

以下是声明意图的地方:

public class TabLayout extends TabActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost(); // The activity TabHost

        Intent intent = new Intent(this, MyClasses.class);
        tabHost.addTab(tabHost.newTabSpec("My Classes")
                .setIndicator("My Classes", res.getDrawable(R.drawable.ic_tab_main))
                .setContent(intent));

        Intent intent2 = new Intent(this, ClassList.class);
        tabHost.addTab(tabHost
                .newTabSpec("Class List")
                .setIndicator("Class List", res.getDrawable(R.drawable.ic_tab_main))
                .setContent(intent2));

        Intent intent3 = new Intent(this, SyncList.class);
        tabHost.addTab(tabHost
                .newTabSpec("Sync List")
                .setIndicator("Sync List", res.getDrawable(R.drawable.ic_tab_main))
                .setContent(intent3));

        tabHost.setCurrentTab(0);

        // Set tabs Colors
        tabHost.setBackgroundColor(Color.BLACK);
        tabHost.getTabWidget().setBackgroundColor(Color.BLACK);

    }
}
下面是MyClassList文件:

公共类MyClassList扩展了MyClasses{

int numClasses;
MyClasses myclasses = new MyClasses();
final static TableRow tableRowArray[] = new TableRow[4];
TextView classNameArray[] = new TextView[4];
TextView teacherNameArray[] = new TextView[4];
Button dropButtonArray[] = new Button[4];

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

    // Create containers
    ScrollView classListScrollView = new ScrollView(this);
    TableLayout classListTableLayout = new TableLayout(this); 

    // Add class entries
    for (int i = 0; i < 4; i++)
    {
        tableRowArray[i] = new TableRow(this);
        tableRowArray[i].setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        classNameArray[i] = new TextView(this);
        classNameArray[i].setText("");
        classNameArray[i].setPadding(10, 20, 10, 20);
        classNameArray[i].setTextSize(20);
        tableRowArray[i].addView(classNameArray[i]);

        teacherNameArray[i] = new TextView(this);
        teacherNameArray[i].setText("");
        teacherNameArray[i].setPadding(10, 20, 10, 20);
        teacherNameArray[i].setTextSize(16);
        tableRowArray[i].addView(teacherNameArray[i]);

        dropButtonArray[i] = new Button(this);
        dropButtonArray[i].setText("Drop");
        tableRowArray[i].addView(dropButtonArray[i]);

        classListTableLayout.addView(tableRowArray[i], new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        tableRowArray[i].setVisibility(View.GONE);
    }

    classListScrollView.addView(classListTableLayout);
    this.setContentView(classListScrollView);

    dropButtonArray[0].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            myclasses.dropClass(0);
        }
    });
    dropButtonArray[1].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            myclasses.dropClass(1);
        }
    });
    dropButtonArray[2].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            myclasses.dropClass(2);
        }
    });
    dropButtonArray[3].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            myclasses.dropClass(3);
        }
    });

}

public void updateMyClasses(ClassObject myclasses[])
{
    for (int i = 0; i < 4; i++)
    {
        if (myclasses[i].isNull)
        {
            classNameArray[i].setText(myclasses[i].getClassName());
            teacherNameArray[i].setText(myclasses[i].getTeacherName());
            tableRowArray[i].setVisibility(View.VISIBLE);
        }
        else
        {
            tableRowArray[i].setVisibility(View.GONE);
        }
    }
}

public MyClasses getMyClasses()
{
    return myclasses;
}

这是你的问题:

MyClasses.addClass(ClassListArray[0]);

您正在尝试调用实例方法
addClass
,而不提供对
MyClasses
实例的引用。如何解决这一问题取决于代码的位置。它是否嵌入到
MyClasses
类中?

为什么不在每次按下按钮时创建意图,并删除全局意图变量。请将给您带来麻烦的部分代码粘贴到这里。我刚刚添加了MyClassList的代码。基本上,我试图将GUI元素与实际的MyClasses数据结构分离,但我仍然遇到从静态上下文引用非静态成员(即MyClasses数据结构)的问题(即类列表实例。)
addButtonArray[0].setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                MyClasses.addClass(ClassListArray[0]);
            }
        });
MyClasses.addClass(ClassListArray[0]);