[英]A setOnClickListener inside another doesn't work
這個 setOnClickListener 不起作用。 我有一個圖像按鈕,它打開一個自定義工具提示,帶有布局,我有三個文本視圖。 我想在單擊 TextView 時添加一個事件,但它不起作用。 有什么解決辦法嗎? 這是代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="135dp"
android:layout_height="120dp"
android:orientation="vertical"
android:background="@drawable/nav_up"
android:id="@+id/tooltip_menu_id">
<TextView
android:id="@+id/tooltip_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="right"
android:text="@string/menu_item_profile"
android:textColor="@color/black"
android:textSize="15dp"
/>
<View
android:layout_width="100dp"
android:layout_height="1dp"
android:background="@color/secondary_grey"
android:layout_gravity="right"/>
<TextView
android:id="@+id/tooltip_notifications"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="right"
android:text="@string/menu_item_notifications"
android:textColor="@color/black"
android:textSize="15dp"
/>
<View
android:layout_width="100dp"
android:layout_height="1dp"
android:background="@color/secondary_grey"
android:layout_gravity="right"/>
<TextView
android:id="@+id/tooltip_logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="right"
android:text="@string/menu_item_logout"
android:textColor="@color/black"
android:textSize="15dp"
/>
和Java:
public class MainActivity extends AppCompatActivity {
TooltipWindow tooltipWindow;
TextView btnLogout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView usernameUser = (TextView) findViewById(R.id.username_user);
final ImageButton btnMenuUser = (ImageButton) findViewById(R.id.btn_user_menu);
tooltipWindow = new TooltipWindow(this);
btnMenuUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tooltipWindow.showToolTip(view, Gravity.RIGHT);
}
});
View myView = findViewById(R.id.tooltip_menu_id);
btnLogout = myView.findViewById(R.id.tooltip_logout);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentLogout = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intentLogout);
finish();
}
});
}
}
當我單擊 btnLogout 時不起作用。 我不知道問題是否可能是 btnLogout 位於使用另一個 setOnClickListener 打開的布局內,這與第二個 onClick 沖突
您的tooltip_logout
TextView
上缺少clickable
屬性。
添加以下內容: android:clickable="true"
你的TextView
將是:
<TextView
android:id="@+id/tooltip_logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="right"
android:text="@string/menu_item_logout"
android:textColor="@color/black"
android:textSize="15dp"
android:clickable="true" />
更新
您的“myView”正在扮演“菜單”的角色,因此正確的做法是創建一個菜單資源文件。 這是示例。
test_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_item_profile" android:title="profile" app:showAsAction="always"></item>
<item android:id="@+id/menu_item_notification" android:title="notification" app:showAsAction="always"></item>
<item android:id="@+id/menu_item_logout" android:title="logout" app:showAsAction="always"></item>
</menu>
覆蓋onCreateOptionsMenu
以擴充自定義菜單,並使用onOptionsItemSelected
來完成您的工作。
主活動.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.test_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menu_item_logout:
Toast.makeText(this, "your work", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.