Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 5

0
votes
answers
56 views
+10

爲什麼我的推送通知不斷重複不規則?

0

使用警報管理器和待處理意圖設置的推送通知顯示異常行爲。出於某種原因,在我打開應用程序後,通知出現一分鐘或更少。有時一分鐘不止一次,那麼它暫時不會出現。我的想法是每天發佈一次通知,假設用戶在24小時內沒有訪問我的應用程序。我打算取消任何以前的計時器,並在用戶下一次訪問我的應用程序時啓動一個新的計時器。以下是我的代碼。爲什麼我的推送通知不斷重複不規則?

public class Main_Menu extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_menu); 

    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 


    Button goToGame1; 

    goToGame1 = (Button) findViewById(R.id.Game1); 
    goToGame1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent beAtGame1 = new Intent(Main_Menu.this, memory_modes.class); 
      startActivity(beAtGame1); 
     } 
    }); 


Button goToGame2; 

    goToGame2 = (Button) findViewById(R.id.Game2); 
    goToGame2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent beAtGame2 = new Intent(Main_Menu.this, computation_modes.class); 
      startActivity(beAtGame2); 
     } 
    }); 


Button goToGame3; 

    goToGame3 = (Button) findViewById(R.id.Game3); 
    goToGame3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent beAtGame3 = new Intent(Main_Menu.this, evaluation_modes.class); 
      startActivity(beAtGame3); 
     } 
    }); 


    Button goToGame4; 

    goToGame4 = (Button) findViewById(R.id.Game4); 
    goToGame4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent beAtGame4 = new Intent(Main_Menu.this, attention_modes.class); 
      startActivity(beAtGame4); 
     } 
    }); 


    Button goToTrackers; 

    goToTrackers = (Button) findViewById(R.id.Trackers); 
    goToTrackers.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent beAtTrackers = new Intent(Main_Menu.this,trackerMenu.class); 
      startActivity(beAtTrackers); 
     } 
    }); 



    Intent intent = new Intent(Main_Menu.this, Receiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(Main_Menu.this, 1, intent, 0); 
    AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); 
    alarm.cancel(pendingIntent); 
    alarm.setRepeating(alarm.RTC_WAKEUP, System.currentTimeMillis(), alarm.INTERVAL_DAY, pendingIntent); 


    } 

public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 

} 

public class Receiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    showNotification(context); 
} 

public void showNotification(Context context) { 
    Intent intent = new Intent(context, Main_Menu.class); 
    PendingIntent pi = PendingIntent.getActivity(context, 1, intent, 0); 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.smalliconfinal) 
      .setColor(Color.argb(000,255,177,17)) 
      .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon4)) 
      .setContentTitle("Title") 
      .setContentText("Some text."); 
    mBuilder.setLights(0xffffb111, 750, 750); 
    mBuilder.setContentIntent(pi); 
    mBuilder.setDefaults(Notification.DEFAULT_SOUND); 
    mBuilder.setAutoCancel(true); 
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(1, mBuilder.build()); 
} 

} 

,並從我的清單:

<receiver android:name=".Receiver"></receiver> 

誰知道爲什麼發生此問題?

非常感謝, 謝謝。

沙发
0
1

AlarmManager.setRepeating方法的第二個參數是警報首先熄滅的時間。

您使用這些參數調用此方法:

alarm.setRepeating(alarm.RTC_WAKEUP, System.currentTimeMillis(), alarm.INTERVAL_DAY, pendingIntent); 

這意味着你設置的重複報警,只要你調用方法(當創建Main_Menu活動)熄滅。

從你的描述好像你正在尋找的東西是這樣的:

alarm.setRepeating(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis() + AlarmManager.INTERVAL_DAY), AlarmManager.INTERVAL_DAY, pendingIntent); 
+0

大加讚賞。 – 4u53r

0
votes
answers
31 views
+10

意向在DATAS使用電子郵件信息的Skype通話

0

我想開一個Skype的Intent(更好地與直接調用如果可能)使用用戶的電子郵件。意向在DATAS使用電子郵件信息的Skype通話

我發現這個,但它似乎只與的Skype用戶名工作:

Intent skype = new Intent("android.intent.action.VIEW"); 
skype.setData(Uri.parse("skype:" + "user_name"));    
startActivity(skype); 

有可能setData的Skype帳戶的電子郵件?如果沒有,可以通過電子郵件獲取用戶名?

沙发
0
0

這似乎是不可能在Intent中使用電子郵件地址,只能使用用戶名。

0
votes
answers
47 views
+10

需要對這些文本行的意圖和對象的傳遞

0

的解釋你好可以向我解釋爲什麼在我發現在互聯網上我們使用捆綁的代碼?我們爲什麼不直接將對象放入意圖?這與執行速度有關嗎?需要對這些文本行的意圖和對象的傳遞

Contact contact = new Contact();  
Intent intent = new Intent(); 
     Bundle args = new Bundle(); 
     args.putSerializable("contact", (contact)); 
     intent.putExtra("BUNDLE", args); 

爲什麼要捆綁而不是直接這樣呢?

Intent intent = new Intent(); 
    intent.putExtra("contact", contact); 
+0

接收方期待一個包。就這樣。當然,您可以在沒有的情況下傳輸這些信但它的設計和實施都是這樣。 – greenapps

沙发
0
0

因爲intent putExtra無法直接接觸您的聯繫人。如果想要通過您的聯繫人工具Serializable接口,如下所示

public class Contact implements Serializable{ 

} 
0
votes
answers
21 views
+10

android - 將烤麪包從一項活動傳遞給另一項活動

0

不確定這是否有效,但我正嘗試從CustomerCall活動向Toledo活動發送Toast消息。android - 將烤麪包從一項活動傳遞給另一項活動

一旦司機選擇取消。敬酒需要發送到RiderHome活動,說「司機取消了請求」

這可以做到嗎?

CustomerCall

btnCancel = (Button)findViewById(R.id.btnDecline); 
    btnCancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

       cancelBooking(); 
     } 
    }); 

} 

private void cancelBooking() { 

    Intent intent = new Intent(getBaseContext(), RiderHome.class); 
    String cancel = "cancel" 
    intent.putExtra("cancel", cancel); 
    startActivity(intent); 

    Toast.makeText(CustomerCall.this, "The Driver has cancelled 
    the request", Toast.LENGTH_LONG).show(); 
} 

RiderHome

public class RiderHome extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener, 
    LocationListener { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

    } 

} 
+0

如何瀏覽RiderHome活動?你可以使用intent包含你的代碼片段嗎? –

+0

爲什麼不只是在CustomerCall活動上敬酒?如果你只是要烤麪包,你爲什麼還需要將其他活動的吐司/消息傳遞給另一個活動? –

+0

@ TentenPonce驅動程序取消請求後,需要將msg發送給騎手,請求被取消 – LizG

沙发
0
1

你可以做到這一點way-:

private void cancelBooking() { 

    Intent intent = new Intent(getBaseContext(), RiderHome.class); 
    String cancel = "cancel" 
    intent.putExtra("user_cancelled",cancel); 
    startActivity(intent); 

    Toast.makeText(CustomerCall.this, "The Driver has cancelled 
    the request", Toast.LENGTH_LONG).show(); 
} 

在此傳遞一個字符串值,指示駕駛員取消請求

和RiderHome活動,你可以,如果你檢查正在通過以下方式獲取該值:

Intent intent=getIntent(); 
intent.getExtras(); 

if(intent.hasExtra("user_cancelled")) 
{ 

    You can print your toast here. 

} 
+0

感謝您的輸入,但沒有工作:/。它與不同用戶的應用程序,所以也許這就是爲什麼它不工作。我想如果我只是傳遞一個字符串,如果字符串通過,我可以然後打印吐司。沒有運氣, – LizG

+0

你能轉移到騎手活動嗎? –

+0

從CustomerCall活動到意圖? – LizG

板凳
0
-1

,而不是(烤麪包與活動 - 吐司的生命是死的,當活動結束)

Toast.makeText(CustomerCall.this, "The Driver has cancelled 
the request", Toast.LENGTH_LONG).show(); 

到(使用背景!它會生存)

Toast.makeText(getBaseContext(), "The Driver has cancelled 
the request", Toast.LENGTH_LONG).show(); 
0
votes
answers
17 views
+10

在無關活動之間傳輸數據

-1

我有三項活動假設爲ActivityA,ActivityBActivityC 其中A已經啓動B和B啓動C然後B被銷燬。
現在我需要將一些數據從ActivityC轉移回ActivityA在無關活動之間傳輸數據

如何在不使用Android的SharedPreference或數據庫的情況下實現此目的?

+0

您可以隨時使用[Intent.FLAG_ACTIVITY_NEW_TASK](https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK)和[Intent.FLAG_ACTIVITY_CLEAR_TOP](https://developer.android。 com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)作爲您想使用'putExtra()'應用的額外數據的意圖標誌。 –

沙发
0
2

讓一個Constant.class並宣佈串

public static String your_value = ""; 
現在在你的活動Ç

。像這樣存儲你的價值。

Constant.your_value = "123456"; 

並在您的活動A。像這樣訪問。

Log.d(getClass().getName(), "Your constant value "+Constant.your_value); 
+0

'並在您的活動A中。像這樣訪問。「。什麼時候? – greenapps

+0

正如OP提到的那樣@greenapps現在,我必須將一些數據傳回到ActivityA ** ,因此每當他想訪問數據時 –

+0

活動A將如何/何時知道數據可用? – greenapps

板凳
0
-1

使用setResult()方法用於將數據發送回

ActivityC使用此。

Intent intent = new Intent(); 
intent.putExtra("data", "yourdata") 
setResult(RESULT_OK, intent);   
finish(); 

現在,在您activityA覆蓋方法onActivityResult()

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1) { 
     if(resultCode == RESULT_OK) { 
      //get your data here 
      String strEditText = data.getStringExtra("data"); 
     }  
    } 
} 

編碼愉快!

0
votes
answers
77 views
+10

從其他應用程序加載到我的瀏覽器的外部網絡鏈接

0

我已經構建了一個Android瀏覽器,我想從其他應用程序加載外部網絡鏈接。在這裏,我在AndroidManifest.xml上添加了這段代碼。所以當我從其他應用打開http/https鏈接時,它會在瀏覽器列表中顯示我的應用。從其他應用程序加載到我的瀏覽器的外部網絡鏈接

<intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" /> 
      <data android:scheme="https" /> 
     </intent-filter> 

現在,通過鍵名,我將獲得這些數據到我的瀏覽器??? 想,如果我發送一個網絡鏈接,關鍵是「URL」,然後我可以加載這個方式,網址,

Intent intent = getIntent(); 
    String url = intent.getStringExtra("url"); 

    if(url!=null) { 
     Intent i = new Intent(Intent.ACTION_VIEW); 
     i.setData(Uri.parse(url)); 
     startActivity(i); 
     finish(); 
    } 

我不知道由哪個鍵名其他應用程序是將數據發送到打開與外部瀏覽器。我該如何解決這個問題?

+0

你想在你的瀏覽器中打開url嗎? – R2R

+0

是的。但我可以捕捉到鏈接? (通過哪個鍵名) – abir99

沙发
0
0

http://www.vogella.com/tutorials/AndroidIntent/article.html

請參閱鏈接。在這裏,他們解釋瞭如何使用明確的意圖在兩個應用程序之間進行通信。他們的例子也完全滿足您的需求。

0
votes
answers
31 views
+10

Android等待瀏覽器意圖完成

1

我正在編寫重定向到URL(我的服務器)的付款方式並保存一些信息,然後轉到銀行頁面以獲得付款價格。但有問題Android等待瀏覽器意圖完成

我想等待瀏覽器意圖完成/取消付款過程。但完成立即後開始意圖,我不能檢查與startActivityForResult()onActivityResult()
我剛剛在startActivityForResult()之後調用了一個結果。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(******)); 
startActivityForResult(intent, 100); 

. 
. 
. 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data)     
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == 100) 
     Log.w("web", "finish"); 
} 
沙发
0
1

瀏覽器是不太可能有結果返回,因爲沒有辦法來指定此時它應該返回。您應該使用WebView,並檢測您認爲完成或取消點的特定URL。

你需要實現一個WebViewClient,並以檢測導航到一個特定的URL,像這樣覆蓋public boolean shouldOverrideUrlLoading (WebView view, String url)

class MyWebViewClient : WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     if (url.equals(FINISH_URL)) { 
      // Finished, we return true to handle navigation ourselves 
      return true; 
     } 

     // Keep navigating 
     return false; 
    } 
} 

在你WebView你需要調用setWebViewClient()

WebView webview = findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.setWebViewClient(new MyWebViewClient()); 
webview.loadUrl("https://yourpaymenturl.com/"); 
+0

謝謝....是的,我可以通過這種方式使用WebView。但我有另一個問題,因爲當地的Android市場禁止我使用網絡視圖,他們告訴我,我應該使用外部瀏覽器...... –

+1

正如我所說,沒有辦法指定瀏覽器應考慮交易完成的地方。如果您的支付平臺允許您在付款完成後指定要重定向的URL(通常用於網頁返回您的網站),您可以指定一個由您的應用處理的URL。這就是說,這將是一個黑客。 –

+0

是的....我認爲我們應該使用自定義網址方案 –

板凳
0
1

的瀏覽器不會發送結果。使用startActivityForResult(),ACTION_VIEW和ACTION_MAIN協議無法正常工作。

https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,INT)

你應該開始一個web視圖,並確定如果用戶通過跟蹤當前的URL完成。

+0

謝謝,但正如我在另一個答案中所說,我不能使用webview,因爲一些隱私政策來自本地安卓市場 –

0
votes
answers
16 views
+10

應用程序中的衆多活動

-3

我剛剛開始學習Android應用程序開發,並對此感到好奇; 假設我想創建一個包含大量活動(頁面)的應用程序,例如聖經應用程序,大約有1189個章節,每章都有不同的活動。這是否意味着我將創建約1189個不同的活動,或者有更簡單的方法來創建這種類型的應用程序?應用程序中的衆多活動

+0

你不會被創建爲每個頁面的活動,因爲這將是矯枉過正。大部分數據(文本,頁碼)都會從數據庫,文本文件或其他來源加載。在每個章節的測驗或某種遊戲方面取決於你想要達到的目標以及邏輯能夠重複使用多少。閱讀面向對象的編程和片段。 – f78xd23

+0

一項活動就夠了。除非你還需要一個閃屏。其餘的都在碎片中完成。和動態內容。 –

沙发
0
0

你可以使用很多設計模式。你可以把你想要在課堂上顯示的信息。然後你可以跨越1189個對象。你可以創建一個活動,並獲得1189個不同的對象的信息。最後顯示在活動中。

這樣https://github.com/newcaoguo/booksource/tree/master/chapter3/RecyclerViewTest

0
votes
answers
44 views
+10

如何從WakefulBroadcastReceiver啓動一個IntentService

6

我有一個應用程序,您應該能夠使用我將在此問題中發佈的代碼完全且非常輕鬆地重新創建。這裏的清單文件:如何從WakefulBroadcastReceiver啓動一個IntentService

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.broadcasttest" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="19" 
     android:targetSdkVersion="21" /> 

    <uses-permission android:name="android.permission.WAKE_LOCK"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <activity 
      android:name="com.example.broadcasttest.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name="com.example.broadcasttest.TestReceiver" 
      android:label="@string/app_name" 
      android:enabled="true" > 
     </receiver> 

     <intentservice 
      android:name="com.example.broadcasttest.MonitorService" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="com.example.broadcasttest.MonitorService" /> 
      </intent-filter> 
     </intentservice> 
    </application> 

</manifest> 

正如你所看到的,包含一個活動,一個(清醒)廣播接收器和intentservice,都在同一個包。該活動得到啓動的啓動,這裏的代碼:

package com.example.broadcasttest; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     sendBroadcast(new Intent(this, TestReceiver.class)); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

這成功地觸發TestReceiveronReceive功能。

package com.example.broadcasttest; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v4.content.WakefulBroadcastReceiver; 

public class TestReceiver extends WakefulBroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //Intent service = new Intent("com.example.broadcasttest.MonitorService"); 
     Intent service = new Intent(context, MonitorService.class); 
     startWakefulService(context, service); 
    } 

} 

這是不如意的事情,雖然,我把一個斷點在onReceive功能,它肯定會被調用。然而,MonitorService類永遠不會達到。我在onHandleEvent函數中放置了一個斷點,但似乎它從來沒有那麼遠。下面是這個類的代碼:

package com.example.broadcasttest; 

import android.app.IntentService; 
import android.content.Intent; 

public class MonitorService extends IntentService { 

    public MonitorService(String name) { 
     super(name); 
    } 

    public MonitorService() 
    { 
     super("MonitorService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } finally { 
      TestReceiver.completeWakefulIntent(intent); 
     } 

    } 

} 

正如你可以從TestReceiver類的註釋行告訴,我使用隱含的意圖,而不是一個明確的一個嘗試。我也讀了this question並嘗試了那裏提到的一切。我在這裏錯過了什麼嗎?我在模擬器上運行(Nexus7 API L)。

有什麼我在這裏失蹤?

+0

對不起,究竟是這些代碼的目的是什麼?它有什麼作用? – 2015-05-30 12:05:18

沙发
0
9

Application Manifest中沒有標籤<intentservice>IntentServiceService的子類,因此您需要將其聲明爲清單中的服務。


變化

<intentservice 
    android:name="com.example.broadcasttest.MonitorService" 
    android:enabled="true" > 
     <intent-filter> 
      <action android:name="com.example.broadcasttest.MonitorService" /> 
     </intent-filter> 
</intentservice> 

<service 
    android:name="com.example.broadcasttest.MonitorService" 
    android:enabled="true" > 
     <intent-filter> 
      <action android:name="com.example.broadcasttest.MonitorService" /> 
     </intent-filter> 
</service> 
+0

謝謝,如果我只知道那很簡單。 我想知道爲什麼我沒有得到任何形式的錯誤。 – overactor 2014-09-01 08:56:27

+0

@overactor最受歡迎:) – 2014-09-01 08:58:40

0
votes
answers
42 views
+10

如何從IntentService類啓動Fragment?

-1

我已經這是在每5 minute.It執行一次Service顯示了當executed.I要開始FragmentAlertDialog按鈕click.I AlertDialog試圖啓動Fragment如何從IntentService類啓動Fragment?

android.app.FragmentManager fm = ((Activity) getApplicationContext()).getFragmentManager(); 

但給人異常java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity

這是我AlertDialog代碼:

Handler mHandler = new Handler(getMainLooper()); 
         mHandler.post(new Runnable() { 
          @Override 
          public void run() { 
           final AlertDialog alertDialog = new AlertDialog.Builder(getApplicationContext(),R.style.Theme_AppCompat_Light_Dialog_Alert) 
           .create(); 

          // Setting Dialog Title 
           alertDialog.setTitle(eventNameEnglish); 

           // Setting Dialog Message 

           alertDialog.setMessage(eventAddressEnglish+"
"+duration); 


         // Setting View Details Button 
         alertDialog.setButton(AlertDialog.BUTTON_POSITIVE,"View Details", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           android.app.FragmentManager fm = ((Activity) getApplicationContext()).getFragmentManager(); 

           dialog_fragment = new DetailFragment("Events", 
             eventNameEnglish, eventAddressEnglish, 
             eventContactNumberEnglish, eventEmailEnglish, eventFaxEnglish, 
             duration,eventOrganizerNameEnglish, 
             eventDescriptionEnglish,eventFullDescriptionEnglish, 
             eventLocationEnglish,eventImageEnglish, 
             eventWebsiteEnglish 
             ); 

           dialog_fragment.show(fm, "detailScreen"); 
          } 
         }); 

         // Setting Cancel Button 
           alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE,"Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int which) { 
             alertDialog.dismiss(); 
            } 
           }); 

         // Showing Alert Message 
         alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
         alertDialog.show(); 
          } 
         }); 

如何做到這一點請大家幫忙。

+0

請註明downvoting – Jas

沙发
0
3

異常提示問題。 getApplicationContext返回值不能轉換爲Activity。您必須刪除現有的活動。

我認爲你需要服務和活動之間的一些溝通。

您可以使用Eventbus或broadcastreceiver或類似的東西。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

+0

,所以我不能直接從服務開始前的片段的原因是什麼? – Jas

+0

你可以從服務啓動活動:http://stackoverflow.com/questions/3606596/android-start-activity-from-service –

+0

你可以提供一個示例代碼片段嗎? – Jas

板凳
0
0

你可以開始活動,那麼只有你可以顯示該片段。這是因爲沒有活動,getFragmentManager()將返回空值

地板
0
1

單獨不能顯示Fragment,A Fragment只能顯示嵌入在Activity內的UI。所以,你的問題有點廣泛,要妥善回答。

但是,這裏有幾個指針:

  1. 寫,activity_layoutframe_layout作爲佔位符的片段
  2. Activityactivity_layout爲內容
  3. 在AndroidManifest註冊活動.xml
  4. 用您的服務撥打startActivity並帶上適當的Intent
  5. in e onCreate你的方法Activity,你可以得到一個FragmentManager然後顯示你的片段。