我在Android Fragments Dev Guide中看到,"活动可以通过使用findFragmentById()或从FragmentManager获取对片段的引用来调用片段中的方法findFragmentByTag()".
下面的示例显示了如何获取片段引用,但不显示如何调用片段中的特定方法.
任何人都可以举例说明如何做到这一点?我想从父Activity调用片段中的特定方法.谢谢.
我正在使用IntentService通过JSON处理与服务器的网络通信.JSON /服务器部分工作正常,但我无法将结果返回到需要的地方.以下代码显示了我如何从onClick()内部启动intent服务,然后让服务更新一个全局变量以将结果传递回主活动.
public class GXActivity extends Activity {
private static final String TAG = "GXActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
// === called when the activity is first created
Log.i(TAG, "GXActivity Created");
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
View.OnClickListener handler = new View.OnClickListener() {
public void onClick(View v) {
// === set up an application context to hold a global variable
// === called user, to contain results from the intent service
GXApp appState = ((GXApp) getApplicationContext());
User user = new User(-1); // …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个固定且始终可见的页脚附加到ListFragment的底部.
我现在这样做:
@Override public void onActivityCreated(Bundle savedInstanceState) {
// ...
adapter = new MyAdapter(getActivity(), R.layout.list, dataList);
ListView list = getListView();
View footer = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_add, null, false);
list.addFooterView(footer);
setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
虽然这段代码确实在列表的底部生成了一个视图,但它并没有真正做到我想要的:
首先,我需要页脚固定,即在屏幕上可见,无论列表的滚动位置如何.使用此解决方案,只有当屏幕滚动到列表底部时,才会显示页脚.
其次,即使列表为EMPTY,我也需要显示页脚.在此解决方案中,当列表为空时,页脚不可见.
固定页脚(在我的情况下,按钮)总是出现在ListFragment或ListActivity下面的最佳方法是什么?
谢谢!
我一直在app app v3中设置Android,使用IABHelper该类,并遵循Google提供的示例代码.我主要通过购买(带有签名的apk和真实的信用卡收费).
但是,在今天的测试过程中,我开始QueryInventoryFinishedListener从queryInventoryAsync()方法中得到一个新的错误:
IABResult message: "Error refreshing inventory (querying prices of items)"
IABResult response: 5:Developer Error
Run Code Online (Sandbox Code Playgroud)
奇怪的是#1是在onIabSetupFinished()回调返回之后发生的(使用习惯的"Hooray"消息).奇怪的是,我可以随后成功处理应用内购买(使用该launchPurchaseFlow()方法).
我在这里发现了一个补丁,解决了我遇到的相同症状,但它对我没有用.
我尝试过使用不同的设备,使用不同的Gmail帐户,并从头开始构建新产品.我甚至在我的应用程序的早期版本上运行正确的错误(什么?!).
我的问题是:即使IABHelper确认设置成功后,为什么我不能查询产品库存?什么可能导致此错误,我该如何解决?
感谢您的任何见解.
UPDATE
通过放弃我正在测试的帐户并切换到新帐户,我能够使库存查询事务再次起作用.没有代码更改.
我的初步结论是,我正在使用的用户帐户(?)中出现了损坏.在测试期间,我通过大量购买不同的应用程序内产品非常努力 - 但我仍然需要了解发生了什么,并确保我的任何用户都不会遇到这种情况.
如果您对此有任何经验,请告诉我.谢谢!
我的Android应用程序需要简单的推送通知才能获知服务器上新数据的外观.Android提供的Google Cloud Messaging(GCM)似乎很合适.
但是,运行速度低于Android 4.0.4的设备需要在手机上显示一个Google帐户(截至2012年10月1日的Google平台统计信息,目前大约有75%的Android手机).要求用户在不相关的应用程序活动中设置Google帐户似乎不是一个好的体验.
是否有任何建议可以在Android平台上使用更通用的推送机制?例如,Amazon SNS的优点和缺点是什么?还有其他候选人?
android push-notification amazon-sns android-c2dm google-cloud-messaging
datepicker中的默认文本大小对我的应用来说太大了.我已经看到了一种建议在这里改变它的方法,但是为了嵌套在datepicker类中的textviews而钓鱼似乎很笨拙且容易出错.
有更好/更清洁的方法吗?
我正在尝试为Android应用设置一些简单的首选项,但无法解决此错误:"xml无法解析或不是字段." 我已经清理,刷新,重启日食,并跳过跳汰机 - 但我不能动摇错误.我究竟做错了什么?
preferences.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Dev options">
<CheckBoxPreference
android:key="devtools"
android:title="Enable clearing user"
android:summary="Enable clearing user" />
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
java类文件:
package com.myapp.prototype;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class GCPreferencesActivity extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load preferences from XML resource
addPreferencesFromResource(R.xml.preferences); // error on this line ??
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我是ActionBarSherlock的新手,我有两个问题:
首先,我只想设置操作栏的标题,但是当我这样称它时它不起作用:
final ActionBar actionBar = (ActionBar) findViewById(R.id.actionBar);
actionBar.setTitle("test title");
Run Code Online (Sandbox Code Playgroud)
相应的xml对象如下所示:
<com.myapp.prototype.ActionBar
android:id="@+id/actionBar2"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
Run Code Online (Sandbox Code Playgroud)
(这是以github示例为模型的:https://github.com/johannilsson/android-actionbar/blob/master/actionbarexample/src/com/markupartist/android/actionbar/example/HomeActivity.java).在网络上的其他地方,我看到了对getSupportActionBar()的引用,但我不清楚如何或在何处调用它.
其次,在另一个地方,我只想完全隐藏Activity的标题栏.我试图通过调用:
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)
但我甚至无法编译.我得到的错误是:
"The method setDisplayShowTitleEnabled(boolean) is undefined for the type
ActionBar."
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我猜Actionbar Sherlock覆盖都涉及到这个问题.有任何建议如何使这项工作?
非常感谢.
在我的Android应用程序中,如果用户在PreferenceScreen中选择看起来像纯文本的内容,我想显示一个Dialog.我已经看过如何从首选项屏幕打开AlertDialog?,但该解决方案从CheckBoxPreference启动.
在我的情况下,我想从看起来像TextView(或者我认为它可能是一个按钮)的东西启动,然后它将导致我已经拥有的"关于"对话框.有什么建议怎么做?谢谢.
我已经在我的Android应用程序的各个活动中存储了一个全局变量,使用了Soonil所解释的android.app.Application的子类(如何在Android中声明全局变量?).
方法如下:
class MyApp extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这种方法适用于从我的任何活动中访问全局变量.但是今天使用相同的方法,我得到以下错误:
Cannot make a static reference to the non-static method getApplicationContext()
from the type ContextWrapper
Run Code Online (Sandbox Code Playgroud)
与之前的关键区别在于新的Activity实际上是一个片段(SherlockFragmentActivity,确切地说).
任何想法为什么我不能像以前一样访问appState,并且有一个很好的解决方法吗?
非常感谢.
编辑:很好的捕获,马特B.事实证明我实际上调用的地方getApplicationContext()在另一个类中.这是调用点:
public class MyActivity extends SherlockFragmentActivity {
public static class AccountListFragment extends SherlockListFragment …Run Code Online (Sandbox Code Playgroud)