我想要什么
长时间点击文本视图时应该打开一个显示其详细信息的新活动,当放开时,即当触发onTouch ACTION_UP事件时,它应该关闭新打开的活动。
我如何努力实现此目标
主要活动代码:
Intent intent = new Intent( (this, ShowDetailActivity.class);
startActivity(intent);
ShowDetailActivity代码:
//OnCreate method
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// Log.i("INFO", "ontouch event");
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Log.d("TouchTest", "Touch down");
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
Log.d("TouchTest", "Touch up");
onBackPressed();
}
return true;
}
});
@Override
public void onBackPressed() {
Log.i("INFO", "GOing back");
super.onBackPressed();
}
问题
它工作正常,除了必须重新点击新打开的细节活动以关闭的事实。我希望我长按文本视图,当活动打开时,它会在同一个点击发布时关闭,它会在我发布的新点击中发布。
编辑: 我更改了问题标题:将事件监听器从一个活动传递到另一个活动
答案 0 :(得分:0)
在做了一些研究之后,我发现只有在创建一个活动后才会注册活动事件,所以对于一个活动来处理必须注册事件的ACTION_UP事件。
因此,在我的情况下,活动不是一个选项,我不得不使用片段,这是你需要做的能够使用片段
这是MainActivity
public class MainActivity extends FragmentActivity {
FrameLayout fl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fl = (FrameLayout) findViewById(R.id.frameTitle);
TextView txtView = (TextView) findViewById(R.id.txt_view);
txtView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
sendMessage();
return true;
}
});
txtView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
}
else if (event.getAction() == android.view.MotionEvent.ACTION_UP){
fl.setVisibility(View.GONE);
}
return false;
}
});
}
public void sendMessage(){
fl.setVisibility(View.VISIBLE);
}
}
这是布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/txt_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_view"
android:layout_marginTop="42dp"
android:layout_toRightOf="@+id/txt_view"
android:text="@string/button_send" />
<FrameLayout
android:id="@+id/frameTitle"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:visibility="gone">
<fragment
android:id="@+id/msg_fragment"
android:name="com.example.holdview.MsgFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
</RelativeLayout>