#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 при создании диалогового окна