我有一个带有图像的imageView,在我要放置文本的图像上.我怎样才能做到这一点?
预API级别14没有切换首选项.如果我使用preferences.xml来创建我的首选项屏幕是否有某种方法可以区分API级别?那么有一个旧版本的复选框和API 14的开关?
什么是最好的方式?
我有一个执行片段事务的活动
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
工作正常.现在我在我的活动中知道了一个动态字符串,我需要在newFragment中的布局中替换它.我以为我可以在transaction.commit()之后调用类似的东西
newFragment.setMyString("my dynamic value");
Run Code Online (Sandbox Code Playgroud)
而在newFragment.java中我有
public void setMyString(String s)
{
TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
tv.setText(s);
}
Run Code Online (Sandbox Code Playgroud)
关键是getActivity()返回null.如何获得我需要的上下文来查找布局元素?
编辑:
我尝试使用捆绑包来跟踪路线,因为这似乎是最干净的方式.所以我改变了我的代码:
Bundle b = new Bundle();
b.putString("text", "my dynamic Text");
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
我的片段onCreateView看起来像这样:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.mylayout, container, false);
TextView t = (TextView) v.findViewById(R.id.texttobereplaced);
t.setText(savedInstanceState.getString("text");
}
Run Code Online (Sandbox Code Playgroud)
看来savedInstranceState是空的.我应该在哪里找到我的捆绑包?
EDIT2:
在回复中错过了getArguments().现在正在工作.
不推荐使用复选框的"启用"xml元素.Eclipse告诉我改为使用state_enabled.我试着补充一下
android:state_enabled="false"
Run Code Online (Sandbox Code Playgroud)
到我的xml中的复选框而不是
android:enabled="false"
Run Code Online (Sandbox Code Playgroud)
但它没有显示任何效果.后者做了所需.我不想使用弃用的方法.难道我做错了什么?
谢谢.
在http://www.anyexample.com/programming/java/java_simple_class_to_compute_md5_hash.xml给出一个例子如何计算字符串的MD5哈希值.这导致20位十六进制字符串.根据http://en.wikipedia.org/wiki/MD5,我希望有一个32位的十六进制字符串.我得到了相同的结果,例如使用dac2009响应如何生成MD5哈希?.
为什么我得到的东西看起来像MD5哈希但不是?我无法想象我得到的所有琴弦我必须用12个前导零填充.
编辑:一个代码示例
public static String MungPass(String pass) throws NoSuchAlgorithmException {
MessageDigest m = MessageDigest.getInstance("MD5");
byte[] data = pass.getBytes();
m.update(data,0,data.length);
BigInteger i = new BigInteger(1,m.digest());
return String.format("%1$032X", i);
}
Run Code Online (Sandbox Code Playgroud)
我有一个通过XML资源定义的菜单.现在动态我添加一个菜单项
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
if(myCondition==true)
{
menu.add(0, 99, 0, "new Entry");
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在onOptionsItemSelected(MenuItem item)中,我有一个case语句,它检查"99"并执行我的操作.从技术上讲,这很好,我只是想知道这是什么数字,这里99,我会选择?在XML中创建的项目通过资源文件获得了一个ID,我认为Android有一些逻辑来创建这些项目.我想知道生成的菜单项是否会偶然发生99,然后它将不再起作用.什么是最好的方式?
我试图让广播接收器工作.应该尽可能简单,我有这样的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mytest.intentRec" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<activity android:name=".mainAct" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.mytest.intentRec.MyIntentRec"
android:enabled="true" >
</receiver>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有一个主要活动mainAct,这只会在启动后发送广播:
public class mainAct extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.sendBroadcast(new Intent());
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个MyIntentRec类,它尽可能简单:
public class MyIntentRec extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("IntentRec", "got it");
}
}
Run Code Online (Sandbox Code Playgroud)
我期望的是,当我启动我的应用程序时,广播被发送并被拾取并且写入了日志条目.我没有看到日志条目,我没有看到任何错误.我怀疑在清单中发送错误或发送广播.我刚刚在那里创建了一个空的意图,是否需要某些属性的某些意图?
我有一个应用程序,用于说4小时,但只有每5分钟用户需要输入或阅读屏幕.让手机进入睡眠状态并锁定屏幕有点烦人.所以我有两个选择:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);这不会锁定屏幕,但屏幕总是很亮,我想在没有活动时调暗它.仅仅是因为电池寿命延长,或者这4小时内没有那么重要?
一个唤醒锁SCREEN_DIM_WAKE_LOCK
也能满足我的需求,但我被告知要使用上面的选项1.
没有唤醒锁,我可以以某种方式实现想要吗?
我有braodcastreceiver,广播接收器应安排一个警报.
通常我会这样做
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC, time, myPendingIntent);
Run Code Online (Sandbox Code Playgroud)
问题是getSystemService仅在Activty中的广播接收器中不可用.我怎么在这里做?
谢谢.
我读了很多关于片段的文章,但我仍然对如何做什么感到困惑.
我有一个MainActivity,它并排显示两个片段.在其中一个片段中,我有一个按钮,并在按钮的片段布局XML中定义
android:onClick="buttonClicked"
Run Code Online (Sandbox Code Playgroud)
现在我想实现该方法
public void buttonClicked(View view)
Run Code Online (Sandbox Code Playgroud)
我原以为这必须在FragmentA.java中实现,而不是在MainActivity.java中实现.但它只有在MainActivity.java中实现该方法时才有效.这是为什么?对我来说没有意义.Pre Honeycomb属于一项活动的方法保留在该活动中,现在在平板电脑上我将许多活动合并到一个MainActivity并且所有不同的方法合并在一起?那么你在FragmentA.java中提出了什么呢?如果你必须开始自己的活动,因为这个应用程序在掌上电脑上运行,那么onClick方法不应该在MainActivity中,而是在需要调用的Activity中.我此刻很困惑......
android ×9
java ×2
alarmmanager ×1
checkbox ×1
deprecated ×1
eclipse ×1
md5 ×1
md5sum ×1
menuitem ×1
preferences ×1
wakelock ×1