问题:如何创建从DialogFragment到另一个Fragment的回调.就我而言,涉及的活动应该完全不知道DialogFragment.
考虑一下我
public class MyFragment extends Fragment implements OnClickListener
Run Code Online (Sandbox Code Playgroud)
然后在某些时候我能做到
DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
Run Code Online (Sandbox Code Playgroud)
MyDialogFragment的样子
protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
DialogFragment fragment = new DialogFragment();
fragment.listener = listener;
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果DialogFragment在其生命周期中暂停和恢复,则无法保证听众会出现.片段中唯一的保证是通过setArguments和getArguments通过Bundle传递的.
如果它应该是监听器,有一种方法可以引用该活动:
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
Run Code Online (Sandbox Code Playgroud)
但我不希望活动监听事件,我需要一个片段.实际上,它可以是任何实现OnClickListener的Java对象.
考虑通过DialogFragment呈现AlertDialog的Fragment的具体示例.它有Yes/No按钮.如何将这些按钮发送回创建它的Fragment?
初学Android开发者在这里.
我正在尝试创建一个应用程序,它将读取存储在设备上的SMS消息,然后向用户提供有关其习惯的统计信息(例如他们经常发送消息的人,常用词等).
但据我所知,似乎没有办法做到这一点.我在论坛上四处看看,大多数人都在谈论访问收件箱,在那里你可以找到用户没有读过的邮件.那么默认应用程序和第三方(例如Handcent)如何显示相同的文本?他们不保留自己的数据库,因为Handcent将在全新安装时显示所有文本.
tl; dr:如何在Android设备上阅读SMS消息,特别是之前读过的消息.
当Jelly Bean 4.2在一个月前宣布时,Filterscript也宣布了.它似乎是一种语言,是Renderscript的下标,具有不同的文件扩展名.这就是我对语言的全部了解.
我已经阅读了整个互联网上存在的关于Filterscript的两个段落并创建了一个小.fs文件pragma rs_fp_relaxed,但ADT构建器并没有像普通.rs文件在同一位置那样获取它.
我的ADT是最新的公共版本(21.0.0),对于Filterscript来说似乎太低了. tools.android.com似乎有21.0.1预览版,但在发行说明中没有提到Filterscript(事实上它只是一个bug修复版本).在任何地方都没有文档!
我如何使用Filterscript?它的文件在哪里?
我尝试过的:
https://www.google.com/search?q=filterscript+site:android.com&tbs=li:1
http://developer.android.com/about/versions/android-4.2.html#Renderscript
http://developer.android.com/tools/sdk/eclipse-adt.html#notes
我试着查看C:\ Users [name]\AppData\Roaming\Skype,我发现了一个名为"chatsync"的文件夹,里面有一些神秘文件夹,文件以.dat结尾.我几乎可以肯定这些是聊天记录,但我不知道如何正确打开这些文件(记事本显示乱码与英文单词混合).我不是想做侦察,只是为我女朋友做的一个项目.
更重要的是:如何正确阅读Skype的.dat文件?
可以理解这个问题有点主观,但我相信有一个具体的答案.
我有一个非常小的活动,只是在ListActivity中向用户显示一些数据.我使用的数据来自应用程序的SQLite数据库,我发现自己这样做了
Run Code Online (Sandbox Code Playgroud)public class MainActivity extends ListActivity{ private DatabaseAdapter dbHelper; @Override public void onCreate(Bundle b){ dbHelper = new DatabaseAdapter(this); super.onCreate(b); } @Override public void onResume(){ dbHelper.open(); fill_data();//a small method that uses dbHelper to setListAdapter super.onResume(); } @Override public void onPause(){ dbHelper.close(); super.onPause(); } private void fill_data(){/*makes use of dbHelper */ }
这只是代码很大程度上不必要吗 我想处理生命周期,因此当MainActivity不在最佳状态时,我可以使用最少量的资源,但与此同时,整个活动可以完成onCreate().
我有大量不同的NSObject类型都具有不同的属性,我试图抽象出一个方法,允许我通过简单地传入我希望过滤的NSArray属性来过滤对象的NSArray.我过滤的数字键可能从1到不等.
以下是过滤NSArray的示例
Run Code Online (Sandbox Code Playgroud)NSArray *filterBy = [NSArray arrayWithObjects: @"ManufacturerID", @"CustomerNumber",nil];
这些键也存在于我正在过滤的NSArray的对象中,所以基本上这需要生成这样的东西:
Run Code Online (Sandbox Code Playgroud)NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K == %@ AND %K == %@", [filterBy objectAtIndex:0], [items valueForKey: [filterBy objectAtindex:0], [filterBy objectAtIndex:1], [items valueForKey: [filterBy objectAtIndex:1]];
这会产生类似的东西: ManufacturerID==18 AND CustomerNumber=='WE543'
是否有可能做到这一点?
在这里完成newb quesiton,但我是C#和Visual Studio 2010的新手.
如何将.dll加载到Visual Studio 2010中,以便我可以使用他们的方法编写C#程序?
更具体地说,我正在尝试使用将通过命令行运行的TweetSharp编写一个Twitter应用程序.
真的我想做的就是说查询,SELECT DISTINCT column FROM table但我无法弄清楚如何在enourmous查询方法中构建它SQLiteDatabase
我只是想在表格中获取所有联系人的姓名.
我正在尝试做一些相当简单的事情.当然可以使用额外的代码行完成,但从技术上讲,为什么这不起作用?
Run Code Online (Sandbox Code Playgroud)int foo = 5; int *bar = &(--foo);
GCC编译告诉我 "invalid lvalue in unary &"
我有一些奇怪的代码.我一定是闭着眼睛打我的键盘,因为这种类型的东西真的很愚蠢,但奇怪的是,我在程序成功运行后抓住了它.
Run Code Online (Sandbox Code Playgroud)struct Number{ private: unsigned long longNumber; public: Number(unsigned long n) { longNumber = n; } unsigned long getReverse() { /*some magic that returns an unsigned long */ } inline unsigned long getLong() { return longNumber; } inline static Number add(Number one, Number two) { return Number(one.getLong() + two.getLong()); } }; int main() { scanf("%lu", n); Number number = Number(n); number = Number::add(number, number.getReverse()); return 0; }
当然,main()中有更多的东西在进行,而Number有更多的成员和功能,但这是我认为重要的.
如果你查看main,你会看到add()传递一个Number和一个unsigned long,但add()只接受Number和Number.
这里发生了什么?
编辑:上面添加了构造函数
我有一个小程序来计算彼此的行星的力量.我的程序有两个结构数组,一个在迭代前保持位置和速度,另一个保持迭代后它们的位置和速度.
在每次迭代结束时,我想将第二个数组中的值移动到第一个数组中,第二个数组可能变为垃圾(但需要指向我稍后可以写入的一些有效内存位置).我以为我可以简单地切换数组,因为数组是指针,但编译器不会让我.
考虑这个例子:
typedef struct { int a; } Foo;
int main()
{
Foo bar[8], baz[8];
Foo *temp = baz;
baz = bar; //ISO C++ forbids the assignment of arrays
bar = temp; //incompatible types in assignment of Foo* to Foo[8]
}
Run Code Online (Sandbox Code Playgroud)
这就是我想做的.它肯定比从1到N的for循环更快.