在我的应用程序中,我有一个导航抽屉,我的应用程序的工作方式是只有一个活动,如果您从导航抽屉中选择一些东西,它会启动/替换当前片段.我怎样才能这样做,以便当从导航抽屉中选择某些内容并且新片段开始时,旧片段结束
我不能
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
getActivity().finish();
}
Run Code Online (Sandbox Code Playgroud)
因为只有一项活动会杀死应用程序.
我如何杀死片段?
编辑:我的片段交易
Home HomeFragment = new Home();
transaction.replace(R.id.llhome, HomeFragment);
transaction.addToBackStack(null);
transaction.commit();
mDrawerList.setItemChecked(position, true);
mDrawerLayout.closeDrawer(mDrawerList);
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在构建一个通过蓝牙与Arduino板通信的Android应用程序,我将蓝牙代码放在一个名为BlueComms的类中.要连接到设备,我使用以下方法:
public boolean connectDevice() {
CheckBt();
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
Log.d(TAG, "Connecting to ... " + device);
mBluetoothAdapter.cancelDiscovery();
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
btSocket.connect();
outStream = btSocket.getOutputStream();
Log.d(TAG, "Connection made.");
return true;
} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
Log.d(TAG, "Unable to end the connection");
return false;
}
Log.d(TAG, "Socket creation failed");
}
return false;
}
private void CheckBt() {
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (!mBluetoothAdapter.isEnabled()) {
System.out.println("Bt dsbld");
}
if (mBluetoothAdapter == null) { …Run Code Online (Sandbox Code Playgroud) 我正在设计一个架构,其中应用程序每次进入后台时都需要执行某些操作(onPause),每次返回前台时都需要执行一组操作(onResume),而不管活动(对于所有活动).有没有办法实现这一点,而不必在每个活动类'onPause和onResume覆盖中调用这些方法?
我正在使用Camera API开发相机应用程序,在我启动应用程序后,在大约3秒内,我的活动空闲(这是我的logcat,当活动开始时):
18317-18317/com.example.cristi.appname W/Preview? surfaceCreated()
18317-18317/com.example.cristi.appname W/Preview? setFlash()
18317-18317/com.example.cristi.appname W/Preview? surfaceChanged()
---->18317-18317/com.example.cristi.appname I/Timeline? Timeline: Activity_idle id:android.os.BinderProxy@30f1e190 time:11392220
18317-18317/com.example.cristi.appname W/CameraActivity? onPause()
18317-18317/com.example.cristi.appname W/CameraActivity? onResume()
---->18317-18317/com.example.cristi.appname I/Timeline? Timeline: Activity_idle id: android.os.BinderProxy@30f1e190 time:11393866
我知道如果屏幕被锁定,它确实是这样的,但是为什么当我的活动被打开而没有做任何其他事情时它会这样做?这让我很烦,因为它会影响我想做的一些事情onPause()以及onResume()在第一次闲置后调用的事情.奇怪的是,之后出现了第二次空闲onResume().
它与我的手机有什么关系吗?我在Allview P5 Mini和三星Galaxy S5上测试我的应用程序.它确实只在三星上,Allview和模拟器上的一切都很好.我需要提一下,闲置不会一直出现,只是在三星的一些应用程序启动时.
有人知道会发生什么吗?欢迎任何参考或建议!提前致谢!
我已经阅读了一些关于在隐藏/最小化应用程序时尝试停止adView的文章,但这会导致我的应用崩溃.
这是我的代码,adView.LoadAd ...和adView.stopLoading都会在启动时崩溃应用程序.
public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onResume() {
super.onResume();
if (AdViewStarted = true) {
adView.loadAd(new AdRequest());
}
}
@Override
protected void onPause() {
super.onPause();
if (AdViewStarted = true) {
adView.destroy();
}
}
[...]
public class AdMob extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adView = new AdView(this, AdSize.BANNER,"12345678901234567890");
LinearLayout layout = (LinearLayout) findViewById(R.id.adView);
layout.addView(adView);
adView.loadAd(new AdRequest());
AdViewStarted = true;
}
@Override
public void onDestroy() {
if (adView != …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序需要在有人退出其主要活动时调用完成(所以我不希望它被暂停),即使按下home活动也必须完成,处理这个当前我只是调用finish()我的onPause()方法,因为一切完成片段它很好地工作,并没有给出任何稳定性问题.
我唯一的问题是我无法处理onPause()以前调用的方向更改onConfigurationChanged()(允许我在发生旋转时禁用此行为).
我可以创建一个服务来处理这个,但它的方式复杂.
任何的想法?
我正在开发一个针对 Api 19 的应用程序,它基本上是一个处理草图。
我面临的问题是我的应用程序第一次运行时,在安装后,它运行良好,直到用户将其发送到后台。然后,如果他们再次单击应用程序图标,则调用 onCreate() 但活动不会被销毁或重新启动。一些变量会发生变化,从而产生奇怪的行为。
这仅在第一次使用该应用程序时发生。强制关闭它后,这种行为不会再发生(据我测试)。从 Eclipse 启动应用程序时也不会发生这种情况。
总而言之,这是第一次强制关闭后发生的情况(我认为是正确的):
活动正在运行。
活动通过主页按钮返回
暂停()
我们再次点击应用程序图标
onResume()
这就是 - 仅 - 安装后第一次运行应用程序时发生的情况:
活动正在运行。
活动通过主页按钮返回
暂停()
我们再次点击应用程序图标
onCreate() <-- !! 注意没有 onDestroy()
onResume()
我想知道我使用沉浸式模式是否与此有关,但是将 Api 目标版本更改为 10、删除沉浸式模式或在旧设备上进行测试都无济于事。当然,我在清单上使用了android:configChanges="orientation|keyboardHidden|screenSize"。
有没有人知道可能导致这种情况的原因?这是一个常见问题还是我应该在我的代码中查找错误?也许是处理错误?
提前感谢您提供任何线索。我希望这是询问这个问题的正确方式。这是我的第一篇文章。
更新: 我的解释不是很准确,但显然有一个错误报告。这个问题在这里解释得更好:https : //code.google.com/p/android/issues/detail?id=26658
不幸的是,我无法使建议的解决方案起作用,在 onCreate() 中使用它会导致我的应用程序关闭或崩溃:
if (!isTaskRoot()) {
finish();
return;
}
Run Code Online (Sandbox Code Playgroud) 我正在制作适配器以使我的书籍集合在列表视图中可见.

如果我添加super(context,position),问题就解决了:
public BookAdapter(Context context, int position, List <Book> updatedBooksList) {
super(context, position);
this.context = context;
this.booksList = updatedBooksList ;
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道为什么我需要这个参数(int position)并调用超类构造函数?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)
另外,从广义上讲,为什么我们总是(?)需要在每个onCreate中调用super.onCreate?
我们不应该覆盖我们所有的活动生命周期阶段 - onPause,onREsume,onStop,OnDestroy,但我们仍然需要在每个阶段调用super?
android oncreate activity-lifecycle android-lifecycle onpause
我对super()覆盖函数中的函数调用感到困惑.
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
是的代码的影响,之前或之后写什么super.onDestroy() 或
super.onPause()或其他超级功能在所有类型的android系统中被覆盖的方法呢?
android activity-lifecycle ondestroy onpause android-activity
EDITED&SOVLED(下)
我需要在用户离开活动时进行最后检查.
如果这次检查的结果不成功,我不能让他出去.
我需要一种这样的:
@Override
protected void onPause() {
if (comprobations == true){
super.onPause();
} else {
NOT EXIT!!
}
}
Run Code Online (Sandbox Code Playgroud)
看起来很容易:但是我试过但不跑.
有人可以帮帮我吗?
Thaanks
解:
感谢大家的快速解答!
他们每个人都帮助我,我学到了一些新东西.
我试过这个onBackPressed()方法,这就是我想要的.我知道用户仍然可以通过按Home键和其他方式退出App,但我只是想阻止用户在返回主菜单时认为我的应用程序配置正常; 如果他们想从应用程序出去,那没关系.
所以我会做这样的事情:
@Override
public void onBackPressed() {
Log.d(LOGTAG, "onBackPressed");
if (COMPROBATIONS() == true){
super.onBackPressed();
} else {
SHOW WARNING!
}
return;
}
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助.
祝你玩得愉快.