Android: пользовательский диалог с данными из пакета

#android #dialog #bundle

#Android #диалог #пакет

Вопрос:

я хочу поместить некоторую строку пакета в пользовательский диалог. До сих пор я выяснил, что Dialog не обрабатывает пакеты. Я попытался создать метод onCreate с помощью GetIntent().getExtras(), но он не работает.

Может кто-нибудь дать мне совет?

 package com.droidfish.apps.acli;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ShowDetails extends Activity {
TextView tvShowDetailsContent1, tvShowDetailsContent2,
        tvShowDetailsContent3;
public String sDetailText1, sDetailText2, sDetailText3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    /** Display Custom Dialog */
    // CustomizeDialog customizeDialog = new CustomizeDialog(this);
    CustomizeDialog customizeDialog = new CustomizeDialog(this);

    tvShowDetailsContent1 = (TextView) findViewById(R.id.tvShowDetailText1);
    tvShowDetailsContent2 = (TextView) findViewById(R.id.tvShowDetailText2);
    tvShowDetailsContent3 = (TextView) findViewById(R.id.tvShowDetailText3);
    savedInstanceState = this.getIntent().getExtras();
    sDetailText1 = savedInstanceState.getString("param1");
    sDetailText2 = savedInstanceState.getString("param2");
    sDetailText3 = savedInstanceState.getString("param3");

    tvShowDetailsContent1.setText(sDetailText1);
    tvShowDetailsContent2.setText(sDetailText2);
    tvShowDetailsContent3.setText(sDetailText3);
    customizeDialog.show();
}

class CustomizeDialog extends Dialog implements OnClickListener {
    Button okButton;
    ShowDetails sh = new ShowDetails();

    public CustomizeDialog(Context context) {
        super(context);
        /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /** Design the dialog in main.xml file */
        setContentView(R.layout.showdetails);

        okButton = (Button) findViewById(R.id.bOkButton);
        okButton.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v == okButton)
            dismiss();
    }

}
}
 

Комментарии:

1. Почему вы не можете получить строку в activity из пакета, а затем передать ее в диалоговое окно?

Ответ №1:

Вы можете реализовать свой собственный конструктор для диалогового окна, которое принимает пакет

 public CustomizeDialog(Context context, Bundle bundle) {
        super(context);


        /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /** Design the dialog in main.xml file */
        setContentView(R.layout.showdetails);

        //do whatever with your bundle here

        okButton = (Button) findViewById(R.id.bOkButton);
        okButton.setOnClickListener(this);
}
 

Затем в вашем onCreate вы можете вызвать

 CustomizeDialog customizeDialog = new CustomizeDialog(this, getIntent().getExtras());
 

Не забудьте проверить, имеет ли ваш пакет значение null при создании диалогового окна