0

私は以下のクラスを持っています(それは非アクティビティクラスですが、コンテキストがあります)、そのメソッドの1つを介してカスタムダイアログを表示したい、私は以下のDialogActivityクラスを持っています

DialogActivity クラス

public class DialogActivity extends Activity implements OnClickListener {

Button btnOk;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.info_dialog);

    btnOk = (Button) findViewById(R.id.btn_info_ok);
    btnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn_info_ok:
        this.finish();
        break;
    }
}
}

このレイアウトの XML は次のとおりです。

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_gravity="top"
android:orientation="vertical" >

<TextView
    android:id="@+id/info_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="@string/dialog_message"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/btn_info_ok"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/btn_info_ok" />

</LinearLayout>

onEnabled()以下のメソッドが実行されたときに、これを別のアクティビティとして表示したいのですが、

DeviceAdminReceiverSample

public class DeviceAdminReceiverSample extends DeviceAdminReceiver {
static final String TAG = "DeviceAdminReceiver";

/** Called when this application is approved to be a device administrator. */
@Override
public void onEnabled(Context context, Intent intent) {
    super.onEnabled(context, intent);
    Toast.makeText(context, R.string.device_admin_enabled,
            Toast.LENGTH_LONG).show();
            Intent in.setClass(context, DialogActivity.class);
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(in);
}
}

info_messageしかし、これを呼び出すと、アクティビティがダイアログとして表示されます(必要に応じて)。このクラスから同じメソッドで設定したいのですがonEnabled()、どうすればそれを行うことができますか? にメソッドを作成しsetText()DialogActivity()それがスローするメソッドでそれを呼び出すと、NullPointerException実行時にメッセージを設定するための参照を取得する方法がわかりませんか?

下の画像はこんな感じです!

ここに画像の説明を入力

4

2 に答える 2

2

インテントで文字列を渡すことができますonEnabled

in.putExtra("INFO_STR", "My info");

次に、ダイアログonCreateで文字列を取得します

String myInfo = getIntent().getStringExtra("INFO_STR");
于 2013-06-10T05:50:58.510 に答える
1

これを試して:

Intent in.setClass(context, DialogActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.putExtra("MY_DIALOG_MSG_ID", R.string.info_custom_message);
context.startActivity(in);


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.info_dialog);

    TextView tv = (TextView)findViewById(R.id.info_message);
    tv.setText(getIntent().getIntExtra("MY_DIALOG_MSG_ID", R.string.info_message));
于 2013-06-10T05:58:28.767 に答える