Articles of android activity

如何在用户点击通知时启动活动?

我试图转换我在教程中find的一些代码供我自己使用。 最初,当用户单击我的应用程序生成的通知时,代码启动了系统联系人列表。 我正在尝试启动我自己的Activity ,而不是启动联系人列表,但它不起作用。 更具体地说,没有任何反应 没有错误,我的Activity也没有加载。 点击后通知窗口消失,原始Activity仍然可见。 这是我的代码: public class MyBroadcastReceiver extends BroadcastReceiver { private NotificationManager mNotificationManager; private int SIMPLE_NOTFICATION_ID; public void onReceive(Context context, Intent intent){ Bundle extras = intent.getExtras(); String deal = (String) extras.get(“Deal”); String title = “Deal found at ” + (String) extras.get(“LocationName”); mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); Notification notifyDetails = new Notification(R.drawable.icon, title,System.currentTimeMillis()); Class […]

Android上下文没有活动? 还有其他没有活动的节目?

我会尽力把它变成一个全面的问题: 我正在编写一个方法来获取一个包含Android设备城市名称的String,由LocationManager和getLastKnownLocation()以及所有这些确定。 然后我意识到我需要在另一个活动中再次做同样的事情,那么为什么不在我的程序中创建一个完全独立的类( LocationFinder ),而不是在任何地方编写重复的代码? 但是我遇到了困扰我的问题。 例如,如果我创建这个类( LocationFinder ),它是否应该扩展Activity,即使它实际上从未实现过可视化? 所有这个类都会有各种getter,如getLastKnownCity()或getCurrentCity()并返回字符串。 我假设它不会扩展Activity类,因为它实际上不是一个活动。 但那么我将使用什么Context: Geocoder geocoder = new Geocoder(Context context, Locale locale) ? 这让我觉得它必须是一项活动。 所以我扩展了Activity,并用构造函数替换了 @Override protected void onCreate(………….. 但出于某种原因,即使我放了,也永远不会被召唤 String city = new LocationFinder().getLastKnownCity(); 我的第一行LocationFinder的onCreate()是 System.out.println(“HEY!”) 它从来没有达到那个目的。 我在android.internal.os.LoggingPrintStream.println()和其他东西得到一个空指针。 另外,还有一堆来自Activity类的系统常量。 例如,我需要获取LOCATION_SERVICE ,这是一个String,如果不扩展Activity,我就无法获得。 当然,我可以作弊,只是输入文字字符串,但这感觉不对。

启动活动而不显示它

我有一个活动A,它开始活动B,活动B开始活动C.有没有办法不显示活动B.我想要这样的行为,因为如果活动B没有内容(例如ListView),显示活动C on我选择了一些数据,然后按回按钮返回活动B.关键是我想在活动堆栈上有活动B,但在某些情况下不显示它。

WindowManager中的全屏

这是我的代码: params = new WindowManager.LayoutParams( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); wm = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE); inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); mTopView = (ViewGroup) inflater.inflate( R.layout.activity_invisible, null); params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_FULLSCREEN; if(keep==true){ int value = brightnessIntent.getExtras().getInt(“value”); float v=value/255.0f; params.dimAmount=0; params.alpha=v; rl = (RelativeLayout) mTopView.findViewById(R.id.window); getWindow().setAttributes(params); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); wm.addView(mTopView, params); } 视图仍显示状态栏, mTopView是一个叠加窗口。 […]

Android:你如何点击其他活动?

我正试图按顺序进入第三个活动。 从主要活动到第二个活动工作正常,但是当我尝试从第二个活动转到第三个活动时,应用程序崩溃了。 这是我的第二个活动的代码: package com.example.helloandroid; import android.app.Activity; //other imports here public class Game extends Activity implements OnClickListener { private static final String TAG = “Matrix”; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.matrix); View doneButton = findViewById(R.id.done_button); doneButton.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.done_button: Intent k = new Intent(this, GameTwo.class); […]

尝试重新打开已经关闭的对象:java.lang.IllegalStateException:?

我知道这个问题在SO中多次提出过,但我无法弄清楚我的确切问题。 我使用以下代码从数据库(表1)获取数据,并根据检索值更新另一个Table2。 它在一些Android版本中运行良好,但是当我用Android 4.0.3进行测试时。 我正在考虑这个java.lang.IllegalStateException:?.attempt to re-open an already-closed object在sum_cursor.moveToNext(); java.lang.IllegalStateException:?.attempt to re-open an already-closed object sum_cursor.moveToNext(); 。 我在AsyncTask中使用此代码。 /** Sum of total matched values*/ Cursor sum_cursor = db.gettotalMatchvalue(this); if(sum_cursor!=null) { sum_cursor.moveToFirst(); for(int j=0; j<sum_cursor.getCount();j++) { float totalmatchedscore = sum_cursor.getInt(0); float totalingredients = Float.parseFloat(sum_cursor.getString(sum_cursor.getColumnIndex(APPDatabase.CK_TOTALINCREDIENTS))); /**average = totalscore/totalingredients*/ double average = totalmatchedscore/totalingredients; int id = Integer.parseInt(sum_cursor.getString(sum_cursor.getColumnIndex(APPDatabase.CK_ID))); […]

通过后退按钮关闭活动时返回意图结果

我使用startActivityForResult(intent, requestCode)从原始Activity启动一个新的Activity 。 我想在用户按下后退按钮时将数据返回到原始Activity ,因此返回原始Activity 。 我尝试了两种方法: 覆盖onBackPressed() : @Override public void onBackPressed() { super.onBackPressed(); Intent intent = new Intent(); intent.putIntegerArrayListExtra(SELECTION_LIST, selected); setResult(RESULT_OK, intent); } 重写onPause() : @Override protected void onPause() { super.onPause(); Intent intent = new Intent(); intent.putIntegerArrayListExtra(SELECTION_LIST, selected); setResult(RESULT_OK, intent); } 不幸的是,它们都没有工作(在onActivityResult() resultCode不是RESULT_OK )。 这样做的正确方法是什么? 谢谢!

Android:从“最近的应用程序”启动应用程序启动它与意图中使用的最后一组附加function

这里有点困惑的问题: 我有一个主屏幕小部件,当点击它时,启动我的主应用程序活动,并在意图中添加一些额外内容: Intent start = new Intent(context, Main.class); start.putExtra(“action”, “showXYZ”); start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(start); 这一切都很好,它开始我的活动,我的活动按预期收到额外的。 它处理这些额外内容并开始另一项活动。 一旦用户点击主屏幕小部件并以这种方式启动主要活动,通过“最近的应用程序”方法进入应用程序(按住“主页”键)将启动带有附加function的主要活动 – 导致处理发生我不想要(并导致第二个活动打开,而不是仅显示主活动)。 这有什么解决方法吗? 从“最近的应用程序”方法启动应用程序时,我想简单地启动Main活动而不使用最后一组附加function。 非常感谢您的帮助! r3mo 注意:我在Android 1.5上 编辑: 在这里find了一个解决方法: Android保持缓存我的意图额外,如何声明一个保留新鲜额外的待处理意图? 我将为窗口小部件引发的意图添加时间戳,并检查Main.java中的时间戳是否是最近的。 如果是,我将继续处理。 如果没有,我将只显示Main.java活动。 很想知道是否有任何官方解决方案。

android studio中的HAXM配置

我试图从GitHub运行一个简单的Android聊天应用程序。 我认为我的HAXM配置存在问题。 当我运行应用程序时,我看到这些错误: HAXM is not working and emulator runs in emulation mode emulator The memory needed by this AVD exceeds the max specified in your HAXM configuration. emulator: AVD RAM size = 1536 MB emulator: HAXM max RAM size = 768 MB emulator: You might want to adjust your AVD RAM size and/or HAXM […]

从非Activity类开始一个新的Activity

我想在非Activity类中启动一个实现DialogListener的新活动,以下是我的代码: public class FacebookLoginDialog implements DialogListener { @Override public void onComplete(Bundle values) { HomeActivity.showInLog(values.toString()); Intent i1 = new Intent (this, SearchActivity.class); startActivity(i1); } @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub } @Override public void onError(DialogError e) { // TODO Auto-generated method stub } @Override public void onCancel() { // TODO Auto-generated […]