在TabHost中使用重复的类的问题

时间:2011-04-25 14:16:38

标签: android android-activity listactivity android-tabhost

我在TabHost中使用ListActivity时遇到了一些问题。我只想使用一个类来显示不同的列表(我管理的),但问题是当我点击新选项卡时,列表不会更新/填充。我找到了一种方法来解决它,那就是创建重复的类(Listclass1.java,Listclass2.java ......)。真的不是很好的编码练习。

以下是我的一些tabhost代码:

intent = new Intent().setClass(this, ListCreator.class);
        intent.putExtra("NAME", "abilities");       
        this.addTab("", R.drawable.abilities, intent);

intent = new Intent().setClass(this, ListCreator.class);
        intent.putExtra("NAME", "map"); 
        this.addTab("", R.drawable.map_rules, intent);

这是Listclass:

package no.heroclix.rules;

import heroclix.Rules.R;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ListCreator extends ListActivity {

    private String NAME;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);

        NAME = getIntent().getExtras().getString("NAME");
        Log.d("List", NAME);

        final String[] rules;
        if(NAME.equals("abilities")) rules = getResources().getStringArray(R.array.abilities_names);
        else if(NAME.equals("map")) rules = getResources().getStringArray(R.array.map_rules_names);
        else if(NAME.equals("objects")) rules = getResources().getStringArray(R.array.objects_names);
        else if(NAME.equals("ata")) rules = getResources().getStringArray(R.array.ata_names);
        else if(NAME.equals("feats")) rules = getResources().getStringArray(R.array.feats_names);
        else rules = getResources().getStringArray(R.array.bfc_names);

        setListAdapter(new ArrayAdapter<String>(this, R.layout.listrow, rules));
        ListView lw = getListView();
        lw.setTextFilterEnabled(true);
        lw.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> av, View v, int position,
                    long id) {
                Intent myIntent = new Intent(getApplicationContext(), ListInfo.class);
                myIntent.putExtra("NAME", NAME);
                myIntent.putExtra("POSITION", position);
                myIntent.putExtra("SIZE", rules.length);
                startActivityForResult(myIntent, 0);
            }

        });
    }
}

任何线索?

编辑:我应该提到这种情况有一段时间了(不使用重复的类),但是在我做了一些更改后(我已经删除了)它不再起作用了。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您实际上并不需要扩展ListActivity,并且您尝试执行类似Is it realizable on Android?

的部分操作

答案 1 :(得分:0)

TabHost.OnTabChangeListener怎么样?

“选项卡更改时要调用的回调的接口定义”。您可以使用它在切换标签时更新标签。