2016-07-24 5 views
0

facebookからchatHeadsを実装しようとしています。この部分は機能しています。Androidチャット・フローティング・アクティビティ

facebookのチャットヘッドと同様に動作するようにします。気泡をタップするとビューが表示され、再度タップするとビューが閉じます。

これまでのところ、私の問題はこのビューをどうするべきかを決定しています。

私は以下のことを達成しようとしています。

私はフローティングアクティビティを使用することを決めました。これは、最も柔軟性があると思います。

これは正しい方法ですか。最終的に私はそこにビューページャーを張りたい。

public class BubbleOverlay extends Activity { 

private boolean active = false; 
private View mainView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.overlay_layout); 
    mainView = findViewById(R.id.main_overlay_layout); 
} 

public void setActive(boolean value){ 
    active = value; 
} 

public void hide(){ 
    active = false; 
    mainView.setVisibility(View.INVISIBLE); 
} 

public void show(){ 
    active = true; 
    mainView.setVisibility(View.VISIBLE); 
} 

public boolean getActive(){ 
    return this.active; 
} 

@Override 
protected void onResume() { 
    active = true; 
    super.onResume(); 
} 

@Override 
protected void onPause() { 
    active = false; 
    super.onPause(); 
} 

@Override 
protected void onDestroy() { 
    active = false; 
    super.onDestroy(); 
} 

Chatheadが実装され、そのように活動を切り替えます:

 overlay = new BubbleOverlay(); 
    Intent intent = new Intent(this, overlay.getClass()).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 

    Handler handler = new Handler(); 
    Runnable runnable_longClick = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      overlay.hide(); 
     } 
    }; 
    handler.postDelayed(runnable_longClick, 5000); 

これは、次のエラーでのクラッシュ:

07-24 01:27:33.195 4752-4752/com.some.package E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: com.some.package, PID: 4752 
                   java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference 
                    at com.some.package.BubbleOverlay.hide(BubbleOverlay.java:34) 
                    at com.some.package.BubbleService$5.run(BubbleService.java:170) 
                    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:6044) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

答えて

関連する問題