我错过了什么或者Fragment没有onRestoreInstanceState()方法吗?如果没有,我该如何获得类似的东西呢?
我试图在程序中的两个fragmens之间传递数据.它只是一个存储在List中的简单字符串.List在片段A中公开,当用户点击列表项时,我需要它显示在片段B中.内容提供者似乎只支持ID,因此不起作用.有什么建议?
好的,每当我尝试替换我的应用程序中的片段时,它只会将容器内部的片段添加到另一个片段中,并保留当前片段.我试过调用replace并引用包含片段的视图,并引用片段本身.这些都不奏效.我可以使用片段事务管理器将一个片段添加到视图中,但即使我尝试在添加它之后将其删除,它也不起作用.任何帮助,将不胜感激.这是我的文件.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Setup the actionabar. Use setDrawableBackground to set a background image for the actionbar.
final ActionBar actionbar = getActionBar();
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(true);
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionbar.addTab(actionbar.newTab().setText(R.string.home_tab_text).setTabListener(this),true);
actionbar.addTab(actionbar.newTab().setText(R.string.insert_tab_text).setTabListener(this));
Fragment fragment = new insert_button_frag();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.button_fragment, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
这是布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:id="@+id/button_fragment_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<fragment
android:name="com.bv.silveredittab.home_button_frag"
android:id="@+id/button_fragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:name="com.bv.silveredittab.quick_insert_frag"
android:id="@+id/quick_insert_frag"
android:layout_width="350dip"
android:layout_height="fill_parent" />
<fragment
android:name="com.bv.silveredittab.editor_frag"
android:id="@+id/editor_frag"
android:layout_width="fill_parent"
android:layout_height="fill_parent" …Run Code Online (Sandbox Code Playgroud) 我有一个我在SQLite浏览器中构建的数据库,它工作正常.我推出了一个带有预建数据库的应用程序,现在我想向该数据库添加更多表和数据.
我可以让应用程序启动SQLiteOpenHelper的onUpgrade方法.但问题是,每次使用帮助器时都会这样做.
我已将其本地化,仅在应用程序启动时,从我用于检索数据的帮助程序中分离升级命令,但这仍然是一个问题.
我已经弄清楚了,因为我从版本1开始在我的计算机上使用相同的数据库(我正在编辑的那个).所以,每当它将新的数据库写入SD卡时它就会显示版本1,即使我应该到现在为止版本4.
所以,我的问题是,如何手动编辑原始数据库的数据库版本,以便在更新时不是在新版本上编写旧版本号?
我有一个活动,当它启动时,它从互联网加载图像.为了节省内存,当按下后退按钮留下Activity时,我希望活动转储所有数据,即删除其中的所有字符串和图像.我认为最好的方法是杀死活动.
好吧,我似乎无法弄清楚按下后退按钮时的回调.所以,我一直在尝试使用onPause()和onStop()回调来完成任务,但两种方式强制关闭我的应用程序.这是代码:
public void onPause() {
this.finish();
}
public void onStop() {
finish();
}
Run Code Online (Sandbox Code Playgroud)
我尝试过多种变体,但似乎都没有.有任何想法吗?
我相信这只是一个简单的连接statemnet.我最近没有使用SQL,似乎忘记了如何做到这一点.我所拥有的是一个列中包含少量列的项目,它引用另一个表格作为该字段的名称.像这样:
id, name, effect1, effect2, effect3, effect4
Run Code Online (Sandbox Code Playgroud)
效果可以引用另一个表只拥有a,id和name列.我正在尝试做的是运行一个查询,为每个效果提取这些名称.
就像是:
SELECT i.name,e.name AS effect1, e.name AS effect2, e.name AS effect3,
e.name AS effect4
FROM item i, effects e
WHERE i.effect1 = e.name
AND i.effect2 = e.name
AND i.effect3 = e.name
AND i.effect4 = e.name
Run Code Online (Sandbox Code Playgroud)
所以,假设我有一个具有如下值的项目:
Toast, 1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)
效果是:
1, burned
2, untoasted
3, wet
4, texas
Run Code Online (Sandbox Code Playgroud)
我想要它显示 toast, burned, untoasted, wet, texas
和想法?
更新:
Table items
id, name, weight, value, effect1,effect2,effect3,effect4
Table …Run Code Online (Sandbox Code Playgroud) 所以,我把我的片段中的事件传递给了活动,所以如何让它成为轮流中的活动,通知片段B做某事.我想片段B在片段A点击列表项时填充自定义列表.因此,它将事件发送到活动,现在如何让活动调用片段B中的事件?
我正在使用最新的ADT插件在Eclipse Juno中创建新的android项目,并且我遇到了应用程序名称的问题.每当我运行应用程序时,它运行正常,但当我转到应用程序列表时,应用程序的名称不存在.相反,我有一个名为MainActivity的新应用程序,它是应用程序中第一个活动的名称.app_name字符串设置为应用程序的名称,但它仍然无法正常工作.我想出了将title_activity_main更改为应用程序的名称修复了应用程序抽屉中错误的应用程序名称的问题,但这似乎是一种方法来解决这个问题.其他人遇到这个问题,或者只是像我一样讨厌新的ADT?
清单代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bv.testapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
我一直在经历很多问题尝试暂停和取消暂停计时器,如果我将方向锁定为纵向或横向它可以工作,但这不完全是我想要做的.当然,当您更改方向时会调用onCreate方法,因此我取消了我的timertask并将其设置为null,但是在多次运行方向后,它不再取消时间任务.我在这里查看了其他人的问题,但似乎没有人能够回答我的问题.继承我的代码.它现在有点草率,因为我一直在努力让我能够让它发挥作用.
public class singleTimer extends Activity implements OnClickListener {
private Integer setTime = 0;
private Integer tmrSeconds = 0;
private Integer tmrMilliSeconds = 0;
private Timer myTimer = new Timer();
private TimerTask myTimerTask;
private TextView timerText;
private boolean isPaused = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_timer);
Bundle extras = getIntent().getExtras();
setTime = extras.getInt("com.bv.armyprt.timer_duration");
if (myTimerTask != null) {
myTimerTask.cancel();
myTimerTask = null;
}
if (savedInstanceState != null) {
if (savedInstanceState.getInt("tmrSeconds") == 0) {
tmrSeconds = setTime;
} …Run Code Online (Sandbox Code Playgroud) 好吧,就像标题所示,我的应用程序中的每个活动都被添加到应用程序抽屉....我真的很讨厌这个新的ADT.首先,应用程序名称作为第一个活动名称出现问题,现在所有活动都显示在应用程序列表中.如果我去卸载它只显示1.其他人有这个问题,并找到了解决方法?