2015-02-24 78 views
-1

我正在处理在我的java代码中编译错误的问题,我无法理解如何更正。在java主要活动的Android工作室错误?

第一个错误:

main cannot be resolved or is not a field ....

二错误:

The method OnKeyListener(new MainActivity.OnKeyListener(){}) is undefined for the type EditText

package com.uichat;  
import android.app.Activity;  
import android.content.Intent; 
import android.database.DataSetObserver; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.AbsListView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import java.io.ByteArrayOutputStream; 

public class MainActivity extends Activity{ 
    private ChatArrayAdapter adp; 
    private ListView list; 
    private EditText ChatText; 
    private Button send; 
    Intent In; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Intent I = getIntent(); 
     send = (Button) findViewById(R.id.btn); 
     list = (ListView) findViewById(R.id.list); 
     adp = new ChatArrayAdapter(getApplicationContext(), R.layout.chat); 
     ChatText = (EditText) findViewById(R.id.chat); 
     ChatText.setKeyListener(new OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        return sendChatMessage(false); 
       } 
       return false; 
      } 
     }); 

     send.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
       sendChatMessage(false); 
      } 
     }); 
     list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
     list.setAdapter(adp); 

     adp.registerDataSetObserver(new DataSetObserver() { 
      @Override 
      public void onChanged() { 
       super.onChanged(); 
       list.setSelection(adp.getCount() - 1); 
      } 
     }); 
    } 

    private boolean sendChatMessage(boolean side) { 
     adp.add(new ChatMessage(side, ChatText.getText().toString())); 
     ChatText.setText(""); 
     side = !side; 
     return true; 
    } 

    public ListView getList() { 
     return list; 
    } 

    public void setList(ListView list) { 
     this.list = list; 
    } 

    class EditView { 
     private String text; 

     public void setOnKeyListener(OnKeyListener onKeyListener) { 
     } 

     public boolean getText() { 
      return true; 
     } 

     public void setText(String text) { 
      this.text = text; 
     } 
    } 

    class OnKeyListener { 
    } 
} 
+2

这将是有益的,如果你有错误/堆栈跟踪。 – ChiefTwoPencils 2015-02-24 22:00:09

+3

你有什么错误?当我们甚至不知道什么是错的时候,很难提供帮助。 – childofsoong 2015-02-24 22:00:12

+0

第二个错误。方法OnKeyListener(新的MainActivity.OnKeyListener(){})未定义类型EditText – Frrank616 2015-02-24 22:05:50

回答

1

第一个错误:

main cannot be resolved or is not a field ....

setContentView(R.layout.main); 

尝试s来引用一个叫做“main”的不存在的R.layout字段

它缺少,因为您的res/layout树中没有有效的“main.xml”,或者因为您需要清理重建您的项目以更新那里的更改。 (偶然导入Android自己的R类也可以,但是你没有在你提供的代码中这样做)。

二错误:

The method OnKeyListener(new MainActivity.OnKeyListener(){}) is undefined for the type EditText

你应该调用该方法的一个EditText是setOnKeyListener()

传递将需要一个实现View.onKeyListener

因此内部

一类的说法
class OnKeyListener { 
} 

个需要有所需的方法

class OnKeyListener { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     //insert code here 
     return true; 
    } 
} 

看到http://developer.android.com/reference/android/view/View.OnKeyListener.html

+0

不工作兄弟 – Frrank616 2015-02-24 23:44:02

+0

每一件事情现在正在工作,但是thr是一个新错误... ChatText.OnKeyListener(new OnKeyListener(){....在ChatText上 – Frrank616 2015-02-25 00:14:43

+0

正如我指出的 – 2015-02-25 02:18:45