Articles of 侦听器

切换首选项 – 同时处理onPreferenceChange和onPreferenceClick

我一直试图得到一个开关首选项在Android中工作,我可以截取和处理不同,在某些情况下,当他们打开/closures,当他们点击整个首选项。 这是我想要完成的:用户进入首选项标签已closures,没有标签存储(即:标签首选项为空)用户打开标签的首选项,并且由于当前没有标签存储它启动标签search活动供用户find标签。 – 工作正常。 如果标签已经存在,他们只改变状态,然后更新正常的值。 – 工作正常 这是我的问题:如果他们点击首选项,但他们已经保存了一个标签,不要改变状态(无论是启用还是禁用),启动标签search活动。 – 这不起作用。 到目前为止我发现的是,在上面的最后一个场景中,我接到onPreferenceChanged的调用,然后调用onPreferenceClicked,随后调用onPreferenceChanged。 这似乎是我的问题。 第一次调用onPreferenceChanged会导致我的SharedPreferences上的侦听器被调用,告诉它现在已经启用了。 如果我没有收到onPreferenceChanged的第一个电话,那么我不会有问题。 这里是我设置听众的相关部分 SwitchPreference tagPref = (SwitchPreference) findPreference(PreferencesConstants.PREFERENCE_TAG_ENABLED); tagPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Log.e("BLAH", "onPrefChanged….is it handled by OnClick?" + Boolean.toString(handledByClick)); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); boolean enabled = prefs.getBoolean(PreferencesConstants.PREFERENCE_TAG_ENABLED, false); Log.e("BLAH", "value stored in prefs? " + […]

如何用第一个片段中的侦听器replace另一个片段

我在我的活动中使用两个片段。最初我会将一个片段添加到活动。然后使用第一个片段中的侦听器我想用第二个片段replace它。 我按照我的理解尝试,但并不是取代。 它显示了两个片段重叠。 Here is my code: // MainActivity public class MainActivity extends Activity { Fragment Fragment_one; Button one; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //one=(Button) findViewById(R.id.button1); //one.setOnClickListener(new View.OnClickListener() { //@Override //public void onClick(View arg0) { // TODO Auto-generated method stub FragmentManager man=getFragmentManager(); FragmentTransaction tran=man.beginTransaction(); Fragment_one=new Fragment1(); tran.add(R.id.fragment_container, Fragment_one);//tran. tran.addToBackStack(null); tran.commit(); //} //}); […]

Android – 监听器捕捉视图属性中的变化(例如android:layout_marginTop)

在Android中,您可以创build一个监听器来捕获视图属性(相对于屏幕顶部的宽度/高度/边距/位置)的更改吗? 当layout_marginTop =“10dp”改变为不同的值时,我想触发一个事件。

活动和片段的相互作用

我有一个多个Fragment的Activity 。 我想显示一个DialogFragment或者从其中一个Fragment打开另一个Fragment 。 我知道一个Activity应该是一个负责打开Fragment的人,所以我尝试了一些东西。 第一 我试图使用getActivity()并将其getActivity() ,以便我可以在Activity调用一个方法来显示一个Fragment但是这会在Fragment创build一个依赖项,并且我希望尽可能避免添加依赖项。 第二 接下来,我尝试了一个监听器来通知Activity它应该显示一个Fragment 。 所以我在Activity创build了一个类来实现监听器接口。 但我有问题,因为我不得不使用New MyActivity().new Listener(); 当我尝试使用getSupportFragmentManager()时它会抛出Exception ,因为Activity这个实例没有初始化。 第三 然后我试图让Activity实现监听器直接工作,因为那么我只是创build一个依赖与侦听器,而不是活动。 但是现在我已经到了我的Activity将实施2 – 4个不同的界面,这使我犹豫不决,因为它会严重降低凝聚力。 所以我试过的任何方式似乎都跑进了一堵砖墙,并创造了依赖关系,我不确定是否需要创build。 我拧了,必须去与这些选项之一? 如果是的话哪个选项最好? 任何帮助或build议是非常感激。

Android:从应用程序类开始新的活动

我有一个Android应用程序,播放来自应用程序类的audio。 在我的应用程序类中有一个PhoneStateListener,在有电话时暂停audio。 通话结束时,我想开始一个特定的活动,但我无法。 这里是我的代码: public void getPhoneState(){ TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); PhoneStateListener phoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { if (state == TelephonyManager.CALL_STATE_RINGING) { if(audio.isPlaying()) audioPlayer.pause(); } else if(state == TelephonyManager.CALL_STATE_IDLE) { audio.start(); Intent missintent= new Intent(context,AudioActivity.class); missintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(missintent); } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) { if(audio.isPlaying()) audioPlayer.pause(); } […]

RecyclerView – NotifyItemInsert上没有animation

出于某种原因,向RecyclerView添加新项目(应该插入到列表顶部)时,除非向下滚动列表并返回到顶部,并且没有任何animation,否则它不会显示。 (只是出现在列表顶部,就好像它在整个时间一样)。 删除一个项目适当的animation工作正常。 RecyclerViewAdapter: @Override public void onNewDatabaseEntryAdded() { //item added to top of the list notifyItemInserted(0); } public FileViewerAdapter(Context context) { super(); mContext = context; mDatabase = new DBHelper(mContext); mDatabase.setOnDatabaseChangedListener(this); } SQLite数据库: private static OnDatabaseChangedListener mOnDatabaseChangedListener; public static void setOnDatabaseChangedListener(OnDatabaseChangedListener listener) { mOnDatabaseChangedListener = listener; } public long addRecording(String recordingName, String filePath, long length) […]

监听器VS处理程序在Android中

监听器和处理程序有什么区别? 我搜查了很多,但我找不到合适的解释。 我在哪里使用侦听器,我在哪里使用Android中的处理程序? 我也经历了以下链接: 事件处理程序,事件监听器和事件注册都是指同一事物吗? 我在哪里可以得到这两个项目的比较讨论? 另外,任何人都可以告诉我什么是可用的不同types的侦听器和处理程序?

等到firebase检索数据

我想构build一个在FireBase中返回一个child值的FireBase 。 我试图做这样的事情: public String getMessage(){ root.child("MessagesOnLaunch").child("Message").addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { message = (String) dataSnapshot.getValue(); Log.i("4r398", "work"); } @Override public void onCancelled(FirebaseError firebaseError) { Log.e("error", firebaseError.getMessage()); } }); return message; } 问题是该方法返回null ,这可能是因为该方法不等待,直到侦听器完成并返回null因为它的默认值的message 。 我怎样才能使这个方法等待,直到侦听器发生,然后返回值。

Android,在XMLcheckbox侦听器?

这是可能的,做这样的事情 XML: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/addContactButton" android:text="@string/addContactButtonLabel" android:onClick="launchContactAdder"/><!– here –> </LinearLayout> Java的: public void launchContactAdder(View v) { Intent i = new Intent(this, ContactAdder.class); startActivity(i); } 但是有一个要求,那就是方法必须是公开的,无效的,最重要的是把View作为一个参数。 现在我想要做同样的事情,但用checkboxbutton。 checkbox有android:onclick属性,但在Android教程中(http://developer.android.com/resources/samples/ContactManager/index.html)我可以看到这个代码 showInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); showInvisible = isChecked; populateContactList(); } }); […]

使用切换语句来处理button点击

我试图包围我的头周围视图,听众等我有一个活动2button:buttonplay和buttonstop。 我的问题是,我无法将自己的观点和听众完全包围起来,以产生一个工作开关语句。 例如,我会喜欢创build一个单一的监听器,并以某种方式使用它来确定哪个button被点击。 然后以某种方式使用在我的switch语句中单击的button的ID,但是我在网上find的一切似乎都使用SEPARATE侦听器为每个button,然后以某种方式使用视图作为参数到Switch语句。 我意识到下面的代码是不正确的,但我正在寻找什么变化,我将需要完成上述。 我想根据点击哪个button来控制MediaPlayer。 我有: Button b1 = (Button) findViewById(R.id.buttonplay); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click switch(v.getId()) { case R.id.buttonplay: //Play voicefile MediaPlayer.create(getBaseContext(), R.raw.voicefile).start(); break; case R.id.buttonstop: //Stop MediaPlayer MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop(); break; } } }); 最终,我想要最直接的方式来打开任何button被点击。 我相信我的困惑的很大一部分源于上下文中使用ClickListeners和Views的方式。 }