2016-04-07 7 views
3

私はすべてのアクティビティでTextViewを表示する必要がありますが、私は+10アクティビティを持っているので、1つ1つずつそれを行うには多くの作業が必要です。すべて表示私のアプリケーションで

私の目的は、ボタンをクリックすると、アプリケーションの下部にテキストビュー(「読み込み中...」)が表示されます。このテキストビューは、プッシュ通知を受け取ったときに消えてしまいます。また、ポップアップを返す必要があります(ポップアップはすべてのアクティビティに表示される必要があります)。

私のプロジェクトには、抽象的な抽象BaseActivityがあり、すべてのアクティビティで拡張されています。

public abstract class BaseActivity extends AppCompatActivity { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

protected void setActionBar(@IdRes int idResToolbar) { 

    Toolbar toolbar = (Toolbar) findViewById(idResToolbar); 
    setSupportActionBar(toolbar); 
    updateFont(toolbar); 
} 
// ... 
} 

私は私の目的のために使うことができますが、それを行う方法はできないと思います。

誰かが何か提案があれば、私はそれを聞いてうれしいです。

ありがとうございます。お使いのベースの活動の

あなたがのonCreate(に書くことができます
+0

Noup、snackbarは解決策ではありません – dpulgarin

答えて

1

テキストビューを含むPopupWindowを使用して、与えられたコンテキストに基づいてPopupWindowを初期化する別のクラスを作成することをお勧めします。

すべてのアクティビティで、ウィンドウを表示したり非表示にしたりできます。別のクラスで必要なすべてのユーティリティメソッドを作成して、ウィンドウを隠して表示するなどの一貫性を避けてください。ウィンドウのテキストビューのテキストを設定するなど

+0

しかし、私は画面のどの部分にPopupWindowを配置することができますか? (下に) – dpulgarin

+0

はい、間違いなく、方法を使用してウィンドウを表示するコントロールがあります。 popup.showAtLocation(parent、Gravity.TOP | Gravity.LEFT、location.left、location.bottom); –

+0

popupWindowを表示しようとしましたが、エラーが表示されます。 "無効なヌルは無効です;アクティビティは実行中ですか? これは私のBaseActivityのメソッドにコードであり、私は私のMainActivityでそれを呼び出す: LayoutInflater layoutInflater = ... 最終ビューpopupView = layoutInflater.inflate(R.layout.dialog、NULL); 最終的なPopupWindow popupWindow =新しいPopupWindow( popupView、 LayoutParams.WRAP_CONTENT、 LayoutParams.WRAP_CONTENT); popupWindow.showAtLocation(popupView、Gravity.BOTTOM、100、100); – dpulgarin

1

)のonCreate()メソッドの開始時に

setContentView(R.layout.base_layout); 

そして、他のすべての活動のようなもの、ちょうどsuper.onCreate()

などを使用異なるレイアウトはのonCreate()(活動の一つのための一例)でこのような何かを追加サポートするrootGroupはで、あなたの基本活動でのViewGroupをある

LayoutInflater inflater = getLayoutInflater(); 
    inflater.inflate(R.layout.activity_1_layout,rootGroup) 

他のアクティビティごとに追加のコンポーネントを追加します

+0

rootGroupを使用することはありません。使用例を追加できますか? – dpulgarin

+0

このメソッドのルートグループパラメータはパラメータです。 viewGroupクラスまたはその拡張機能の1つ(linearLayout、RelativeLayoutなど)。そのため、基本アクティビティのxmlファイルには、ViewGroupサブクラスの1つが必要です(コメント内にコードを配置できず、別の投稿が必要です)。そのviewGroupサブクラスにはidが必要です。そしてあなたのコードでは、super.onCreate()を作成した後で、そのviewGroupをidで見つけることができます - LinearLayout myLinLay =(LinearLayout)findViewById(R.id.linLay_id);このminLinLayをinflater.inflateメソッドのパラメータとして追加してください –

+0

あなたの説明をお寄せいただきありがとうございました! – dpulgarin

2

(異なるアクティビティではなく)コンテンツにフラグメントを使用すると、フラグメントを保持するアクティビティにグローバルビューを追加できます。

そうしたくない場合は、ベースクラスのレイアウトを変更する必要があります。

+0

私はBaseActivityでレイアウトを追加しようとしましたが、それを見せないようにしました。 – dpulgarin

1

あなたはthisのような利用可能なオープンソースのライブラリのいずれかを使用するか、またはthis

を参照することができる(マニフェストで relevant permissionが必要になります)

を他のアプリの上に描画することができるビューを作成するサービスを作成します

1

多くのアクティビティを使用する代わりにフラグメントを使用する方が良いでしょう。しかし、そうしたくない場合は、すべてのアクティビティのテキストビューを生成するファクトリを作成することをお勧めします。次に、それを各アクティビティのビューに追加する必要があります。

+0

工場を作りますか?あなたはこれをさらに説明することができますか?ありがとう – dpulgarin

+0

工場はあなたがいくつかのパラメータを与えるクラスであり、あなたのオブジェクトに 'textview'のようなオブジェクトを返します –

関連する問題