Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动画编辑后,文本将被聚焦以进行键入_Java_Android_Animation_Focus_Focusable - Fatal编程技术网

Java 动画编辑后,文本将被聚焦以进行键入

Java 动画编辑后,文本将被聚焦以进行键入,java,android,animation,focus,focusable,Java,Android,Animation,Focus,Focusable,我正在尝试在动画发生后将我的EditText聚焦以展开它。我尝试通过编程设置焦点,在Xml中也尝试过。我已经没有办法解决这个问题了,但必须有人知道 主要活动 public void onSearchExpand(View view){ w_SearchBarFullScreen.setVisibility(View.VISIBLE); SearchBarExpand = AnimationUtils.loadAnimation(MainActivity.this,R.anim.w

我正在尝试在动画发生后将我的EditText聚焦以展开它。我尝试通过编程设置焦点,在Xml中也尝试过。我已经没有办法解决这个问题了,但必须有人知道

主要活动

public void onSearchExpand(View view){
    w_SearchBarFullScreen.setVisibility(View.VISIBLE);
    SearchBarExpand = AnimationUtils.loadAnimation(MainActivity.this,R.anim.web_search_expand);
    w_SearchBarFullScreen.startAnimation(SearchBarExpand);
    w_Toolbar.startAnimation(FadeOut);
    w_SearchBarFullScreen.setFocusable(true);
}
XMl

但现在的问题是让键盘显示出焦点,有什么建议吗

由于使用了动画侦听器,我留下了这个错误

01-31 13:35:27.411 5950-5950/com.example.mickeyt.onyxbrowser 
E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.mickeyt.onyxbrowser, PID: 5950

java.lang.IllegalStateException: Could not execute method for 
android:onClick
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                               at android.view.View.performClick(View.java:5623)
                                                                               at android.view.View$PerformClick.run(View.java:22433)
                                                                               at android.os.Handler.handleCallback(Handler.java:751)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:154)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6247)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
                                                                            Caused by: java.lang.reflect.InvocationTargetException
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                               at android.view.View.performClick(View.java:5623) 
                                                                               at android.view.View$PerformClick.run(View.java:22433) 
                                                                               at android.os.Handler.handleCallback(Handler.java:751) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                               at android.os.Looper.loop(Looper.java:154) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6247) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 
                                                                            Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.animation.Animation.setAnimationListener(android.view.animation.Animation$AnimationListener)' on a null object reference
                                                                               at com.example.mickeyt.onyxbrowser.MainActivity.onSearchExpand(MainActivity.java:338)
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                               at android.view.View.performClick(View.java:5623) 
                                                                               at android.view.View$PerformClick.run(View.java:22433) 
                                                                               at android.os.Handler.handleCallback(Handler.java:751) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                               at android.os.Looper.loop(Looper.java:154) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6247) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) 
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 

您需要一个监听器,它将在动画完成时触发,所以请执行此操作

FadeOut.setAnimationListener(new AnimationListener() {
    public void onAnimationStart(Animation anim){};
    public void onAnimationRepeat(Animation anim){};
    public void onAnimationEnd(Animation anim)
    {
        // as mentioned by lib4
        w_SearchBarFullScreen.requestFocus();
    };
}); 
因为,当前您在动画完成之前请求聚焦

或者您可以尝试通过xml将其添加为

<EditText  ...>
    <requestFocus/>
</EditText>

您可能可以试试这个,一个重要的想法是您可以使用requestFocus()来获得焦点

SearchBarExpand.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
               w_SearchBarFullScreen.requestFocus();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

SearchBarExpand.start();
如果EditText获得焦点但键盘未显示,则应在onAnimationEnd()中尝试以下操作:-


使用这个对我来说很有用

 public void onSearchExpand(View view){
    w_SearchBarFullScreen.setVisibility(View.VISIBLE);

   w_SearchBarFullScreen.startAnimation(SearchBarExpand);
   w_Toolbar.startAnimation(FadeOut);

   if(w_SearchBarFullScreen.getVisibility() == View.VISIBLE){
       w_SearchBarFullScreen.requestFocus();
       w_SearchBarFullScreen.setText("   ");
       InputMethodManager imm = (InputMethodManager)   getSystemService(Context.INPUT_METHOD_SERVICE);
       assert imm != null;
       imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
   }

为什么不将w_searchbar全屏显示。setFocusable(false)@EquiWare查看我的答案,如何在其中显示软键盖..查看新编辑了解为什么Logcat与AnimationListener错误与Animation Listener一起出现,我在想我是如何将其放入动画中的?您是否调用了SearchBarExpand.start();?很抱歉,我最终找到了答案,检查UpdateGetWidow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u STATE\u ALWAYS\u VISIBLE);用这个来显示键盘让我们看看。
SearchBarExpand.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
               w_SearchBarFullScreen.requestFocus();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

SearchBarExpand.start();
@Override
public void onAnimationEnd(Animation animation) {

    if(w_SearchBarFullScreen.requestFocus()) {
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
    }
}
 public void onSearchExpand(View view){
    w_SearchBarFullScreen.setVisibility(View.VISIBLE);

   w_SearchBarFullScreen.startAnimation(SearchBarExpand);
   w_Toolbar.startAnimation(FadeOut);

   if(w_SearchBarFullScreen.getVisibility() == View.VISIBLE){
       w_SearchBarFullScreen.requestFocus();
       w_SearchBarFullScreen.setText("   ");
       InputMethodManager imm = (InputMethodManager)   getSystemService(Context.INPUT_METHOD_SERVICE);
       assert imm != null;
       imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
   }