Мое приложение Android работает в TabHost.У меня есть 5 «подвидов», все из которых выполняются, как и ожидалось, с одним исключением.Последний элемент - это функция поиска.Это такой простой интерфейс с TextView для метки, EditText для поля поиска и Button.
Когда я впервые запускаю приложение и перехожу на вкладку Search, независимо от того, сколькокогда я щелкаю в поле EditText, программная клавиатура не вызывается;однако, если вызывается другое действие, которое не является частью моего TabHost, а затем я возвращаюсь к действию поиска и щелкаю текст Edit Edit поиска, клавиатура вызывается, как и ожидалось.
У меня нет никаких действийобработчики для поля, только для нажатия кнопки.Я попытался заставить EditText сфокусироваться на событии onCreate и даже заставить отображать клавиатуру, используя различные методы, найденные здесь, в StackOverflow.См. Мой текущий код ниже:
public class Search extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
//Give the edit text focus
EditText et1 = (EditText) findViewById(R.id.editText1);
et1.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et1, InputMethodManager.SHOW_FORCED);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
EditText et = (EditText) findViewById(R.id.editText1);
String term = et.getText().toString();
if (term.length() > 0) {
//do stuff }
else if (term.length() <= 0) {
Toast.makeText(getApplicationContext(), "Please Enter A Search Terml", Toast.LENGTH_SHORT).show();
}
}
});
}
Вот как выглядит TabHost:
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, Tab3.class);
// Initialize a TabSpec for each tab and add it to the TabHost
try {
//home Tab
intent = new Intent().setClass(this, Home.class);
spec = tabHost.newTabSpec("home").setIndicator("Home",
res.getDrawable(R.drawable.grade))
.setContent(intent);
tabHost.addTab(spec);
//tab 2
intent = new Intent().setClass(this, Tab2.class);
spec = tabHost.newTabSpec("tab2").setIndicator("Tab2",
res.getDrawable(R.drawable.chart))
.setContent(intent);
tabHost.addTab(spec);
//tab 3
intent = new Intent().setClass(this, Tab3.class);
spec = tabHost.newTabSpec("tab3").setIndicator("Tab3",
res.getDrawable(R.drawable.tab3))
.setContent(intent);
tabHost.addTab(spec);
//tab 4
intent = new Intent().setClass(this, Tab4.class);
spec = tabHost.newTabSpec("tab4").setIndicator("Tab4",
res.getDrawable(R.drawable.tab4))
.setContent(intent);
tabHost.addTab(spec);
//search tab
intent = new Intent().setClass(this, Search.class);
spec = tabHost.newTabSpec("search").setIndicator("Search",
res.getDrawable(R.drawable.magnify))
.setContent(intent);
tabHost.addTab(spec);
//Set tab To Home
tabHost.setCurrentTab(0);
}
catch (Exception ex) {
Toast t = Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG);
t.show();
}
Заранее спасибо за вашу помощь.