前提・実現したいこと
アンドロイドスタジオのタブホストのタブ名を変更できる処理を追加したいです。
下のソースコードでは、まず名前を変えたいタブを長押しし、ダイアログを表示して、そこで入力された名前にタブの名前を変えるということを試しましたが、タブ名は変わりませんでした。
![
発生している問題・エラーメッセージ
タブの名前が変わらない。
該当のソースコード
Java
tabView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { LayoutInflater factory = LayoutInflater.from(MainActivity.this); final View inputView = factory.inflate(R.layout.dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("カテゴリ名変更"); //editviewを追加 builder.setView(inputView); builder.setNegativeButton("キャンセル", null); builder.setPositiveButton("変更", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { //TODO タブの名前変更 //変更押したときの処理 EditText et = (EditText)inputView.findViewById(R.id.editText1); String text = et.getText().toString();//editviewに変更後のタブ名を記入(text) Tab1.setIndicator(text);//ここでタブの名前を変更 } }); builder.show(); return false; } });
補足情報(FW/ツールのバージョンなど)
Gradleバージョン:7.0.2
そのタブをどうやって作ってるかによるのでは…。
タブはAndroid StudioのTabHostというものを使って作っています。
こういう方法 https://stackoverflow.com/a/2292323/1019868 もあるようですが、TabHost の実装詳細に依存するのはよくない気がしますよね。とはいえ clearAllTabs() して addTab し直すのも現在表示されてるコンテンツの立場がなくなるし、TabHost の代替 (そもそも API 30 で deprecated ですし) を探すのが良いのかなぁ。(作り込まれてるアプリでは、大体こういう表示部品はカスタム化されてる気が…。)
ありがとうございます。
まだ回答がついていません
会員登録して回答してみよう