Проблема с использованием дублированного класса в TabHost
У меня возникли проблемы с использованием ListActivity внутри TabHost. Я хочу использовать только один класс для отображения разных списков (которыми я управляю), но проблема в том, что когда я нажимаю на новую вкладку, список не обновляется / не заполняется. Я нашел один способ решить эту проблему - создать дублированные классы (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 ответа
Если я правильно понимаю, вам не нужно расширять ListActivity, и вы пытаетесь сделать что-то частично наподобие Реализуемо ли это на Android?
Как насчет TabHost.OnTabChangeListener?
Msgstr "Определение интерфейса для обратного вызова, который будет вызываться при изменении вкладки". Вы можете использовать это для обновления вкладок при переключении между ними.