2012-12-12 129 views
3

我搜索的不僅僅是stackoverflow,還有其他網站,但是我找不到我的問題的答案。我現在開始學習Android,並且對活動有疑問。在不顯示屏幕布局的情況下執行活動

我有一個MainActivity用兩個按鈕創建一個通知。一個現在是無用的,另一個(發送按鈕)將打開帶有EditText和一個按鈕的警報,以將文本發送到另一個應用程序。

這是代碼:

Intent mainActivityIntent = new Intent(MainActivity.this, NotificationActivity.class); 
      Intent shareActivityIntent = new Intent(MainActivity.this, ShareActivity.class); 
      PendingIntent mainActivityPIntent = PendingIntent.getActivity(MainActivity.this, 0, mainActivityIntent, 0); 
      PendingIntent shareActivityPIntent = PendingIntent.getActivity(MainActivity.this, 0, shareActivityIntent, 0); 

      Notification n = new Notification.InboxStyle 
        (new Notification.Builder(MainActivity.this) 
        .setContentTitle(getString(R.string.text_notification)) 
        .setContentText(getString(R.string.text_notification)) 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setContentIntent(mainActivityPIntent) 
        .addAction(R.drawable.logo, "Botão", mainActivityPIntent) 
        .addAction(R.drawable.ic_launcher, "Share", shareActivityPIntent) 
          ) 
        .build(); 

      n.flags |= Notification.FLAG_ONGOING_EVENT; 

      NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
      nm.notify(0, n); 

正如你所看到的,發送按鈕將打開另一個活動,其中有下面的代碼:

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

    alert.setTitle("Mensagem"); 
    alert.setMessage("Digite a mensagem"); 


    final EditText input = new EditText(this); 
    alert.setView(input); 

    alert.setPositiveButton("Enviar", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     String value = input.getText().toString(); 
     Intent i = new Intent(Intent.ACTION_SEND); 
     i.setType("text/plain"); 
     i.putExtra(Intent.EXTRA_TEXT, value); 
     startActivity(Intent.createChooser(i, "Enviar")); 
     finishActivity(0); 
     } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     return; 
     } 
    }); 

    alert.show(); 

該活動負責打開警報用戶將輸入文本併發送到其他應用程序。

情況是,當我呼叫該活動時,它不僅顯示警報,而且還打開一個新的「屏幕」。例如:通知是持久的,所以它會一直顯示在通知抽屜中。如果我在另一個應用中,並且點擊了通知中的按鈕,我只想打開警報,但現在它會打開警報,並顯示我的活動佈局。

有沒有辦法只顯示警報,而不顯示活動?或者我必須使用另一種方法來做到這一點?

非常感謝。

+0

codeMagic的建議是一個很好的建議。只需爲通知活動創建一個佈局,使其看起來像一個'AlertDialog',但爲其提供'Theme.Dialog'屬性。這使得它看起來像一個「對話框」彈出框,但具有「活動」的全部功能。這意味着你根本不需要'AlertDialog','Activity'不會消除背景,所以它會留下任何其他部分可見的應用。 – Squonk

回答

1

如果沒有絕對需要警報對話框,您可以使警報成爲自己的活動,而不是使用警報構建器。把按鈕和文字瀏覽或任何你需要的東西,你會。然後在清單中使用

<activity android:theme="@android:style/Theme.Dialog">

Here更多的是主題。希望這可以幫助

+0

+1正是我想要建議 – Squonk

+0

謝謝,如果我忘記了一些東西,隨時添加。我以爲我在家裏有我的代碼,但我錯了 – codeMagic

+0

謝謝,我會試試這個。 – vdlow

相關問題