は私がアプリケーションを起動するたびに、それはエクスプローラ]タブを開き、私は、検索タブに切り替えることができますし、searchviewは完璧に動作TabLayoutで3つの断片を持っていたときに動作を停止します。私がエクスプローラに切り替えて検索に戻ると、それはまだ動作します。SearchViewはここ<a href="https://imgur.com/a/Z9dTQ" rel="nofollow noreferrer">http://imgur.com/a/Z9dTQ</a></p> <p>見られるように、スイッチタブ
My SearchViewは検索可能なアクティビティを使用せず、代わりにonQueryTextChangeリスナーで検索します。 SearchViewの下には、30個のTextViewがあるLinearLayoutがあり、テキストは検索によって変更されます。
しかし、クイズタブに切り替えて検索すると、SearchViewのテキストはそのまま残りますが、TextViewsは既定値の "gone"にリセットされます。http://imgur.com/a/L4RvE。 SearchViewを使用して現在検索しようとしても機能しません。
クイズタブに切り替えると自分の検索レイアウトが崩れてしまいます。私が戻ったときには、検索レイアウトが膨らみますが、SearchViewは正しくインスタンス化されません。再度検索しようとすると、OnQueryTextChangeは呼び出されません。なぜそれがこれを行うのか分かりません。
問題は、QuizLayout.xmlにSearchViewを追加し、2番目のSearchViewのコードを、クイズタブのMainActivityのonCreateOptionsMenuに追加したときに始まりました。しかし、コメントアウトしてすべてのIDが正しいことを確認した後でさえ、問題はまだ発生します。
以下は私のコードですが、無関係なコードは省略しています。
マイSearchFragment:
package com.example.ryans45attcdie.chess;
public class SearchFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.search_fragment, container, false);
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
searchLayout =
(LinearLayout)getView().findViewById(R.id.searchLayoutS);
}
}
マイQuizFragment:(デバッグ用空)
public class QuizFragment extends Fragment {}
マイMainActivity:
public class MainActivity extends AppCompatActivity {
TextView sname1;//(etc.)
ArrayList<TextView> masterNameListS;
List<Fragment> fragments = new Vector<>();
ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set up fragments in tabs
fragments.add(Fragment.instantiate(this, QuizFragment.class.getName()));
fragments.add(Fragment.instantiate(this,
ExplorerFragment.class.getName()));
fragments.add(Fragment.instantiate(this,
SearchFragment.class.getName()));
PagerAdaptor adaptor = new PagerAdaptor(getSupportFragmentManager(),
fragments);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(adaptor);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(pager);
tabLayout.getTabAt(0).setText("QUIZ");
tabLayout.getTabAt(1).setText("EXPLORE");
tabLayout.getTabAt(2).setText("SEARCH");
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.list_content, listItems);
pager.setCurrentItem(1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
sname1 = (TextView) findViewById(R.id.sname1); //(etc.)
final ArrayList<TextView> masterNameListS = new ArrayList<>();
masterNameListS.add(sname1); //(etc.)
// Get the SearchView and set the searchable configuration
SearchManager searchManagerS = (SearchManager)
getSystemService(Context.SEARCH_SERVICE);
SearchView searchViewS = (SearchView) findViewById(R.id.searchViewS);
// Assumes current activity is the searchable activity
ComponentName cnS = new ComponentName(this, SearchableActivity.class);
searchViewS.setSearchableInfo(searchManagerS.getSearchableInfo(cnS));
searchViewS.setIconifiedByDefault(false); // Do not iconify the widget;
expand it by default
searchViewS.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String s) {
return true;
}
@Override
public boolean onQueryTextChange(String s) {
//parse search string and set TextView texts here
return true;
}
});
return true;
}
@Override
public booleafn onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
そしてPagerAdapter:
package com.example.ryans45attcdie.chess;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.WindowManager;
import java.util.List;
public class PagerAdaptor extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PagerAdaptor(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
}
My QuizLayout.xmlが空です。 SearchLayout.xmlは、テキストとVisibility.GONEのないTextViewをすべて作成します。ヘルプみんなのために非常に多くの
おかげで、
スティーブン