0

この質問は実際には3部構成の質問です。私の問題の有効な解決策を提案してください。

アプリケーションの概要

スプラッシュ画面とListViewを備えたアプリケーションを作成しています。ランチャーアイコンをクリックすると、最初にスプラッシュ画面が表示され、3〜4秒後、スプラッシュ画面がListViewアクティビティを呼び出し、ユーザーは電話画面にListViewアイテムを残します。各アイテムをクリックすると、それぞれのテキストコンテンツがユーザーに表示されます。コンテンツを読んだ後、ユーザーは[戻る]ボタンをクリックし、ListViewアイテムセクションに戻ります。他のアイテムのコンテンツを読みたい場合は、そのアイテムをクリックするとそのページに移動します。よろしければ、電話の「戻る」ボタンをクリックして、アプリケーションを閉じます。

パート1-私が実際にやりたいこと

さまざまなlistViewアイテムをクリックするだけで、さまざまなテキストコンテンツ(通常のテキストではなくスタイル(太字/斜体/画像を含む))を表示したい。htmlページを作成してリソースフォルダーにローカルに保存できますが、わかりません。 onItemClickListenerを呼び出しているときにこれらのページを呼び出す方法。これがこの種の作業を行うための有効なアプローチであるかどうかはわかりません。アドバイスをお願いします。今のところ機能していません。

パート2-代わりに今やっていること

テキストコンテンツを呼び出すことができなかったため、テキストエディターでコンテンツを作成し、エディターですべての凝った作業を行い、コンテンツの準備ができたら、スクリーンショットを撮り、代わりにonItemClickListenerを呼び出しながらその画像を呼び出しました。正常に動作しており、ListViewアイテムをクリックすると画像が表示されます。

パート3-私が直面している問題

画像がユーザーに表示されたら、[戻る]ボタンをクリックすると、ListViewセクションに戻るのではなく、アプリケーションが閉じられます。どうやら、リストビューアイテムのクリックで開く画像は、リストビュー自体と同じアクティビティにあります。私が欲しいのは、ユーザーがテキストコンテンツを読み終えた後、ListViewセクションに戻ることができるようにすることです。

以下は、ListViewアクティビティのコードです 。publicclass MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListView listView = (ListView) findViewById(R.id.menulist);
    String[] values = new String[] { "1. First Article Here", "2. Second Article Here", "3. Third Article Here"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        R.layout.custom_listview, R.id.text1, values);

    // Assign adapter to ListView
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, android.view.View view, int position, long id){
            //
            if(0==position)
            {
                setContentView(R.layout.image0); 

             }
            else if (1==position)
            {

            }
        }        

    });

} *コードはsetContentView(R.layout.image0);まで正常に機能します。*しかし、この後、「戻る」ボタンをクリックすると、アプリケーションをListViewセクションに戻したいのですが、代わりに閉じます。ご案内ください。

4

5 に答える 5

0

で解決するかもしれません、

別のアクティビティでlayout.image0を使用し、リストアイテムをクリックしたときに意図的に呼び出します。

これを使用すると、戻るボタンをクリックすると、前のアクティビティが表示されます

于 2012-07-24T08:13:25.760 に答える
0

戻るボタンを押すと、現在のアクティビティが閉じられ、スタック上の前のアクティビティに戻ります。リスト要素を押してアクティビティを変更するのではなく、レイアウトを変更するだけである場合、戻るボタンを押すとスタックが空になり、アプリが閉じます。

最もクリーンな方法は、別のアクティビティでスプラッシュ画面を起動することです。

それを解決する他のいくつかの方法は次のとおりです。-フラグメントのスタックを追加する

または(最も汚い方法)、onBackPressed()をオーバーライドし、アプリがスプラッシュ画面を表示しているときにそれをインターセプトして、レイアウトをリストビューに戻します。

私は他のアプローチを好みます。

于 2012-07-24T08:18:42.453 に答える
0

メソッドを使用する場合setContentView()、新しいものが作成されていないため、戻るボタン機能は機能しません。Activityそこからに戻ることができますlistView。クリックしたアイテムの有用な情報を取得してIntentリンク)に入れ、メソッドを呼び出しstartActivity()て新しいアクティビティを開始し、ユーザーにコンテンツを表示したいと思います。次に、ユーザーが[戻る]ボタンをクリックすると、「詳細」アクティビティが消え、ユーザーには再びが表示されますlistView

于 2012-07-24T08:19:12.207 に答える
0

setContentViewを使用しているため、OnItemの新しいビューで現在のビューをオーバーライドします。クリック...むしろ、相対レイアウトなどのアクティビティにビューグループを追加します...そして、Itmeをクリックすると、既存のレイアウトに新しいレイアウトを追加します。背面でレイアウトを削除します。

または、DialogViewを使用してビューを動的に追加できます。以下を参照してください。

    Dialog dialog = new Dialog(this, android.R.style.Theme_Dialog);
    dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 0xff000000);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(Your VIew);
    dialog.show();

または、最後に、現在のアクティビティを使用して別のインテントを開始できます。

于 2012-07-24T08:23:10.367 に答える
0

パート1と2

XMLファイルを使用して、複雑でスタイル設定されたレイアウトを作成できます。

本当にHTMLを使用したい場合は、を使用することをお勧めしますWebView。プレーンなhtml文字列をリソースのどこかに保存し、を使用Webview.loadDataWithBaseUrl()してを表示することができますWebView

機能に応じて選択できます。処理するさまざまなイベントがたくさんある場合(をクリックするなどView)、XMLファイルを選択します。異なるリスナーを個別に割り当てることができるためですViews。機能が現在のように進んでいない場合は、ビュー全体をクリックするだけです。も使用できますWebView

パート3 問題は、-メソッドを悪用していることですsetContentView。使用する必要のあるXMLファイルを示しますsetContentViewActivityあなたの場合、Activityが作成されるとき、それはを使用しますR.layout.activity_main

アイテムをクリックすると、 ..はもうActivity使用しないで、..を使用するように指示します。これが行われ、画像が表示されます。R.layout.activity_mainR.layout.image0Activity

ただし、これはレイアウトを変更するための良い方法ではなく、作業フローを台無しにします。画像が表示されたときにアプリケーションが閉じる理由は、Back開始されたアクティビティが1つしかないためです。(スタックには1つしか含まれてActivityいません)レイアウトを切り替えたばかりですが、新しいActivityものは開始されません。

解決

2つのアクティビティを作成します。

  1. Activityリストを表示するメインを作成し、でレイアウトを設定しますsetContentView(R.layout.activity_main)。クリックイベントがトリガーされると、2番目のが開始されますActivityIntent i = new Intent(...)。また、にいくつかの引数を追加Intentし、2番目のアクティビティでそれらにアクセスして、クリックされたアイテムと表示する画像を確認することもできます。
  2. コンテンツまたはこの場合は画像を示す詳細なアクティビティ。setContentView(R.layout.image0)

解決策2

コンテンツを表示するポップアップを作成します。そのためのダイアログを使用できます。

于 2012-07-24T08:43:54.403 に答える