android中的处理程序给出错误

android中的处理程序给出错误,android,android-layout,android-intent,Android,Android Layout,Android Intent,我在代码中使用处理程序在每个特定的时间间隔更新应用程序 为此,我编写了以下代码: public class Messages extends Activity { protected Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我在代码中使用处理程序在每个特定的时间间隔更新应用程序

为此,我编写了以下代码:

public class Messages extends Activity {


    protected Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_messages);

        Intent intent = getIntent();

        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        String id = intent.getStringExtra(MainActivity.EXTRA_ID);
        String[] lst = null;
        ListView lm=(ListView)findViewById(R.id.listView1);
        TextView tv = (TextView)findViewById(R.id.textView1);

        tv.setText("Welcome " + message);

        handler.postDelayed(new UpdateTask(),500);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.messages, menu);
        return true;
    }

    class UpdateTask implements Runnable {

        @Override
        public void run() {
            // TODO Auto-generated method stub

            setContentView(R.layout.activity_messages);

            Intent intent = getIntent();

            String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
            String id = intent.getStringExtra(MainActivity.EXTRA_ID);
            String[] lst = null;
            ListView lm=(ListView)findViewById(R.id.listView1);
            TextView tv = (TextView)findViewById(R.id.textView1);

            tv.setText("Welcome " + message);

            CallSoap cs=new CallSoap();

            lst=cs.GetMessage(id);

            ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);

            lm.setAdapter(adpt);

            handler.postDelayed(this, 500);
        }

    }


}
公共类消息扩展活动{
受保护的处理程序=新处理程序();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_消息);
Intent=getIntent();
字符串消息=intent.getStringExtra(MainActivity.EXTRA_消息);
String id=intent.getStringExtra(MainActivity.EXTRA_id);
字符串[]lst=null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText(“欢迎”+信息);
postdayed(newupdateTask(),500);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.messages,menu);
返回true;
}
类UpdateTask实现可运行{
@凌驾
公开募捐{
//TODO自动生成的方法存根
setContentView(R.layout.activity_消息);
Intent=getIntent();
字符串消息=intent.getStringExtra(MainActivity.EXTRA_消息);
String id=intent.getStringExtra(MainActivity.EXTRA_id);
字符串[]lst=null;
ListView lm=(ListView)findViewById(R.id.listView1);
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText(“欢迎”+信息);
CallSoap cs=新的CallSoap();
lst=cs.GetMessage(id);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple_list_item_1,lst);
lm.设置适配器(adpt);
handler.postDelayed(这个,500);
}
}
}
但这给了我一个错误:

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);
文本:
构造函数数组适配器未定义。

请帮助我。

将构造函数中的“this”引用与ActivityName.this关联

改变

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);

ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
应该有用

也就是说,如果您只希望定期更新,那么不需要一直调用上面的代码

相反,只需调用
adapter.notifyDataSetChanged()应该做这项工作

将构造函数中的“this”引用与ActivityName.this关联

ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
改变

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);

ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
应该有用

也就是说,如果您只希望定期更新,那么不需要一直调用上面的代码

相反,只需调用
adapter.notifyDataSetChanged()应该做这项工作

ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple\u list\u item\u 1,lst);
ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
但我不明白你为什么把这些都放在一个处理器里

对于同一个设计不好的活动,我还看到了两次
setContentView

如果需要更新listview,请更新填充listview的基础数据,并在适配器上调用
notifyDataSetchanged

另外,
setContentView
和每次初始化视图都不是一个好主意ad

ArrayAdapter adpt=newarrayadapter(Messages.this,android.R.layout.simple_list_item_1,lst);
但我不明白你为什么把这些都放在一个处理器里

对于同一个设计不好的活动,我还看到了两次
setContentView

如果需要更新listview,请更新填充listview的基础数据,并在适配器上调用
notifyDataSetchanged

另外,
setContentView
和每次初始化视图都不是一个好主意,您应该改变这一点

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);

ArrayAdapter adpt=newarrayadapter(YourActivity.this,android.R.layout.simple\u list\u item\u 1,lst);
您应该更改此选项

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst);
ArrayAdapter adpt=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,lst);

ArrayAdapter adpt=newarrayadapter(YourActivity.this,android.R.layout.simple\u list\u item\u 1,lst);

我想在每次指定的时间间隔后刷新或重新执行此代码why@NavatKayAahe你所做的对我来说不是一个好的设计我该怎么做,我对这个很陌生,请告诉我。是的,我刚刚测试了它,它对我很有用。除了代码设计,我会在我的app@NavatKayAahe但即使它起作用,如果您需要更新lsitview,那么您所做的并不是一个好方法。只需更新填充lsitview的基础数据,并在适配器上调用
notifDataSetChanged
,无需每次都
setContentView
和初始化视图。每次刷新或在特定时间间隔后重新执行此代码时why@NavatKayAahe在我看来,你所做的不是一个好的设计我该怎么办,我对这个很陌生,plz guid me.yup,我刚刚测试过,它对我有用。除了代码设计,我会在我的app@NavatKayAahe但即使它起作用,如果您需要更新lsitview,那么您所做的并不是一个好方法。只需更新填充lsitview的基础数据,并在您的计算机上调用
notifDataSetChanged