2013-06-10 1 views
0

У меня есть класс ниже (это класс неактивности, но он имеет контекст), я хочу показать пользовательский диалог по одному из его методов, у меня есть класс 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); 
} 
} 

но когда я называю это то, что она есть, она проявляет активность как Dialog (по желанию), я хочу установить info_message из этого класса, в том же onEnabled() методе, как я могу это сделать? Если я создаю метод до setText() в DialogActivity() и вызову его в этом методе, он выдает NullPointerException, я не знаю, как я могу получить ссылку на его сообщение во время выполнения?

Изображение внизу, как оно выглядит!

enter image description here

ответ

2

Вы можете передать строку в намерении в вашем onEnabled

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

Затем в Диалог onCreate вы извлекаете строку

String myInfo = getIntent().getStringExtra("INFO_STR"); 
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));