无法解析方法(Android Studio(java)中的初学者问题)

时间:2016-04-09 23:03:06

标签: java android android-studio

我正在学习如何使用Java在Android Studio中设置Surface View。这是我的代码:

setContentView(v);

  public OurView(Context context){
    super(context);
    holder = getHolder();
}

我收到错误消息:

  

"无法解决方法   的setContentView(com.example.ben3.pl2.SurfaceView.OurView)"

并在

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

struct ListNode {

int val;
ListNode *next;
ListNode(int x): val(x), next(NULL) {}
};

class Solution {
public:
    ListNode *getIntersection(ListNode *A, ListNode *B) {
        ListNode *p1 = A;
        ListNode *p2 = B;


        if(p1==NULL || p2==NULL)
            return NULL;

        while(p1!=NULL && p2!=NULL && p1!=p2) {
            p1=p1->next;
            p2=p2->next;

            if(p1==p2)
                return p1;

            if(p1==NULL) p1=B;
            if(p2==NULL) p2=A;    
        }

        return p1;
    }

    void print(ListNode *p) {
        while(p!=NULL) {
            cout<< p->val << " " ;
            p=p->next;  
        }

        cout<<endl;
    }
};

int main() {
    Solution s;
    ListNode *p1 = new ListNode(5);
    p1->next = new ListNode(11);

    s.print(p1);
    //similar for p2

    ListNode *p2 = new ListNode(6);
    p2->next = new ListNode(11);
    s.print(p2);

    s.getIntersection(p1,p2);
    return 0;
}

我收到了错误:

  

&#34;无法解析方法super(android.content.Context)&#34;

     

&#34;无法解析方法getHolder()&#34;

任何人都可以帮助我吗?该教程是从2011年开始的,所以它可能与他们有旧版本的AS有关,或者我只是错过了一些东西。

2 个答案:

答案 0 :(得分:2)

你应该在这里解决一些问题。将您的班级和文件重命名为MyActivity或至少SurfaceView以外的其他内容,以避免混淆。您想使用SurfaceView中的android.view.SurfaceView而不是您自己的import android.view.SurfaceView; ,因此您应该导入该OurView

setContentView()

此外,您必须先创建import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MyActivity extends Activity { private OurView v; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); v = new OurView(this); setContentView(v); } @Override protected void onPause() { super.onPause(); v.pause(); } @Override protected void onResume() { super.onResume(); v.resume(); } public class OurView extends SurfaceView implements Runnable { Thread t = null; SurfaceHolder holder; boolean isOk = false; public OurView(Context context){ super(context); holder = getHolder(); } public void run(){ if(isOk){ } } public void pause(){ isOk = false; while (true){ try { t.join(); t = null; break; } catch (InterruptedException e) { e.printStackTrace(); } } } public void resume(){ isOk = true; t = new Thread(this); t.start(); } } } 的新实例,然后才能在private KeyboardView kv; private Keyboard keyboard; 中使用它。

以下是您应用更改的代码。

case 37:
            keyboard = new Keyboard(this, R.xml.qwerty2);
            kv.setKeyboard(keyboard);
            kv.setOnKeyboardActionListener(this);
            break;

答案 1 :(得分:1)

尝试在setcontentview方法之前设置您的视图 像这样

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 v = new OurView(this);
 setContentView(v);
}

让我保持最新