2015-03-04 4 views
1

Я создаю alertdialog, где в сообщении я помещаю строку. Эта строка содержит некоторый текст, который я хочу связать с ними, поэтому, когда они отображаются в диалоговом окне, пользователь может щелкнуть по ним и перейти к другим представлениям. Позвольте мне показать вам пример того, что я хочу:Добавить ссылку на текст alertdialog android

public class Activity extends FragmentActivity{ 

(...) 

    public void myMethod(){ 
     String message = "Some links: link1, link2, link3"; 
     AlertDialog.Builder builder = new AlertDialog.Builder(this) 
     builder.setTitle("This is a title"); 
     builder.setMessage(message); 
     builder.setCancelable(true); 
     builder.setOnCancelListener(onCancelListener); 
     builder.create().show(); 
    } 
} 

Я хочу сделать что-то LINK1, link2 и LINK3 поэтому, когда они отображаются в диалоговом окне, то они отображаются в виде ссылок. Затем, когда пользователь нажимает на ссылку 1, появляется новое действие; при нажатии на ссылку2 отображается другое представление и то же самое со ссылкой3.

Я хотел иметь onlinkclicklistener или что-то в этом роде, чтобы захватить, когда пользователь нажимает на ссылку.

Любые идеи о том, как это сделать? Я надеюсь, вы понимаете, что я хочу :)

+0

Вы можете использовать WebView, Linkify - http://developer.android.com/reference/android/text/util/Linkify.html – shivamDev

+0

Ват вы подразумеваете под видом это новая активность или html-страница, которую вы хотите отобразить. – eLemEnt

+0

попробуйте использовать Html.fromHtml: builder.setMessage (Html.fromHtml (message)); –

ответ

0

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

поэтому создайте новый XML-файл для размещения своего настраиваемого диалогового окна.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/button1" 
     android:text="firstButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/dialogButtonOK" 
     android:layout_width="100px" 
     android:layout_height="wrap_content" 
     android:text=" Ok " 
     android:layout_marginTop="5dp" 
     android:layout_marginRight="5dp" 
     /> 

    <Button 
     android:id="@+id/button2" 
     android:text="SecondButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Вышеупомянутое будет вашим макетом для пользовательского диалогового окна.

теперь внутри вашего метода, где вы используете AlertDialog.Builder, используйте ниже код.

public void myMethod(){ 
final Dialog dialog = new Dialog(context); 
       dialog.setContentView(R.layout.custome); 
       dialog.setTitle("Title..."); 

       // set the custom dialog components - text, image and button 
       Button button1 = (Button) dialog.findViewById(R.id.button1); 
       button1.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Intent intent = new Intent(getBaseContext(),MyActivity2.class); 
         startActivity(intent); 
        } 
       }); 

       Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK); 
       // if button is clicked, close the custom dialog 
       dialogButton.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         dialog.dismiss(); 
        } 
       }); 

       dialog.show(); 
      } 
} 

Так это покажет диалоговое окно пользовательского с макетом, указанным в XML выше и при нажатии на Button1 он откроет MyActivity2 в новом виде.

более подробно вы должны проверить here

+0

, конечно, это очень хороший ответ, и с некоторые изменения будут работать. Я буду искать другие более простые предложения, но если я не найду, я буду отмечать это как ответ :) – RedDeath

+0

@RedDeath no problm приятель, но проверьте ссылку, указанную в ответе. – eLemEnt

6
public void myMethod(){ 
     String link1 = "<a href=\"http://www.google.com\">http://www.google.com</a>"; 
     String message = "Some links: "+link1+"link1, link2, link3"; 
     Spanned myMessage = Html.fromHtml(message); 


     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("This is a title"); 
     builder.setMessage(myMessage); 
     builder.setCancelable(true); 
     AlertDialog alertDialog = builder.create(); 
     alertDialog.show(); 
     TextView msgTxt = (TextView) alertDialog.findViewById(android.R.id.message); 
     msgTxt.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
+0

это отлично работает. , если я изменю вашу ссылку1 на «" aName «;», есть ли какая-либо возможность, когда я нажимаю «имя» (которое отображается как ссылка), я захватываю этот клик вместо открытия «хром» или «Интернет», опции? (ну, на самом деле эти опции появляются только в том случае, если я действительно использую ссылку, а не «aName», потому что, если я использую «aName», приложение падает, потому что это не ссылка http) – RedDeath

Смежные вопросы