Android:从活动上下文外部调用startActivity()
我的警报对话框中有一个文本视图,我正在文本中放置一个URL?当我使用以下代码时,它会给我一个错误:Android:从活动上下文外部调用startActivity(),android,textview,android-alertdialog,linkify,Android,Textview,Android Alertdialog,Linkify,我的警报对话框中有一个文本视图,我正在文本中放置一个URL?当我使用以下代码时,它会给我一个错误: final TextView message = new TextView(context); final SpannableString s = new SpannableString(context.getText(R.string.SEND_SMS)); message.setText(s
final TextView message = new TextView(context);
final SpannableString s = new SpannableString(context.getText(R.string.SEND_SMS));
message.setText(s);
message.setPadding(10, 0, 4, 0);
message.setGravity(Gravity.AXIS_CLIP);
message.setMovementMethod(LinkMovementMethod.getInstance());
new AlertDialog.Builder(MyClass.this)
.setTitle("Message 1\nStep 1 of 4")
.setView(message)
.setPositiveButton(R.string.CONTINUE,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Log.e("@@","Inside OnClick");
//new CheckLoginStatus().execute();
sendSMS();
myProgressDialog=new ProgressDialog(MyClass.this);
myProgressDialog.setTitle("Message 2\nStep 2 of 4");
myProgressDialog.setMessage("Message\n" +
"Please wait... attempt "+(count));
myProgressDialog.setCancelable(false);
myProgressDialog.show();
Thread splashTread = new Thread() {
@Override
public void run() {
try {
for(int i=0;i<3;i++)
{
if(!smsStatus || !smsSendStatus){
Log.e("@@","Inside Run..");
int waited = 0;
while( (waited < 120000)) {
sleep(100);
waited += 100;
}
Log.e("after","120sec count="+count);
if(!smsStatus)
handler.sendEmptyMessage(0);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
finally
{
Log.e("Logs", "Inside stop of thread");
stop();
}
}
};
splashTread.start();
}
})
.setNegativeButton(R.string.do_later,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish();
}
})
.setCancelable(false).show();
最终文本视图消息=新文本视图(上下文);
final SpannableString s=新的SpannableString(context.getText(R.string.SEND_SMS));
message.setText;
message.setPadding(10,0,4,0);
message.setGravity(Gravity.AXIS_CLIP);
message.setMovementMethod(LinkMovementMethod.getInstance());
新建AlertDialog.Builder(MyClass.this)
.setTitle(“消息1\n第1步,共4步”)
.setView(消息)
.setPositiveButton(R.string.CONTINUE,新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int whichButton){
Log.e(“@@”,“内部OnClick”);
//新建CheckLoginStatus().execute();
sendSMS();
myProgressDialog=新建ProgressDialog(MyClass.this);
myProgressDialog.setTitle(“消息2\n第2步,共4步”);
myProgressDialog.setMessage(“消息\n”+
“请稍候…尝试”+(计数));
myProgressDialog.setCancelable(false);
myProgressDialog.show();
螺纹飞溅踏板=新螺纹(){
@凌驾
公开募捐{
试一试{
对于(int i=0;i如果处理程序位于活动
类中,则在创建文本视图
时将该类用作上下文,而不是getBaseContext()
这将使用活动
上下文,使您的问题消失
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
count += 1;
if(count<=3){
try{
Log.e("@@","Inside handler try count="+count);
if(myProgressDialog.isShowing())
myProgressDialog.dismiss();
}catch(Exception e){
e.printStackTrace();
}
//new CheckLoginStatus().execute();
sendSMS();
if(!myProgressDialog.isShowing()){
myProgressDialog=new ProgressDialog(MyClass.this);
myProgressDialog.setTitle("My Message\nStep 2 of 4");
myProgressDialog.setMessage("Me Message\n" +
"Please wait... attempt "+(count));
myProgressDialog.setCancelable(false);
myProgressDialog.show();
}
}else if(count == 4){
try{
Log.e("@@","Inside handler else "+count);
if(myProgressDialog.isShowing())
myProgressDialog.dismiss();
}catch(Exception e){
e.printStackTrace();
}
count = 1;
final TextView message = new TextView(getBaseContext());
final SpannableString s = new SpannableString(getBaseContext().getText(R.string.SMS_NOT_RECEIVED));
Linkify.addLinks(s, Linkify.WEB_URLS);
message.setText(s);
message.setPadding(10, 0, 4, 0);
message.setGravity(Gravity.CLIP_HORIZONTAL);
message.setMovementMethod(LinkMovementMethod.getInstance());
new AlertDialog.Builder(MyClass.this)
.setTitle("My Message\nError")
.setView(message)
.setPositiveButton(R.string.OK_TEXT,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish();
}
}).setCancelable(false).show();
}
}
};