Tip*_*pok 5 java data-binding android navigation-drawer android-databinding
对不起我的英语不好。我需要使用 Android 数据绑定处理按钮单击。我包含在 content_main.xml 数据绑定中。
<data>
<variable
name="temp"
type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityData" />
<variable
name="presenter"
type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityPresenter"/>
</data>
....
<android.support.design.widget.FloatingActionButton
android:onClick="@{() -> presenter.onShowData(temp)}"
Run Code Online (Sandbox Code Playgroud)
但是 MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContentMainBinding binding = DataBindingUtil.setContentView(this, R.layout.content_main);
MainActivityPresenter mainActivityPresenter = new MainActivityPresenter(this);
MainActivityData mainActivityData = new MainActivityData("??? ?????");
binding.setTemp(mainActivityData);
binding.setPresenter(mainActivityPresenter);
setContentView(R.layout.activity_main);
....
@Override
public void showData(MainActivityData mainActivityData) {
String textForRecognition = mainActivityData.getTextForRecognition();
Toast.makeText(this, textForRecognition, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
我希望函数showData运行,然后单击 content_main 中的 FloatingActionButton。但是 showData - MainActivity 类中的函数。因此,据我所知,当您单击位于content_main.xml上的按钮时,它不会被调用。我该怎么办?创建一个单独的类 ContentActivity.java 和函数 showData。
我只想让 MainActivity.java 负责处理对 content_main 的点击。如何正确实施?
在 Activity 中添加此代码以进行数据绑定,如下所示
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
MainViewmodel mainViewmodel = ViewModelProviders.of(this).get(MainViewmodel.class);
activityMainBinding.setHandlers(handlers);
activityMainBinding.setViewmodel(mainViewmodel);
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("HOME");
DrawerLayout drawer = activityMainBinding.drawerLayout;
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = activityMainBinding.navView;
NavHeaderMainBinding navHeaderMainBinding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.nav_header_main, activityMainBinding.navView, true);
navHeaderMainBinding.navEmail.setText(session.getFacilityEmail());
navHeaderMainBinding.navName.setText(session.getFacilityname());
navigationView.setNavigationItemSelectedListener(this);
}
Run Code Online (Sandbox Code Playgroud)
在 nav_hader_main.xml 中你必须像这样
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="navigationheader"
type="com.nudge.gurukul.view.activities.MainActivity" />
<import type="android.view.View" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/nav_header_desc"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/app_logo_round" />
<TextView
android:id="@+id/nav_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/nav_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这应该按照您的规定除外,您可以将文本和图像绑定到导航抽屉
归档时间: |
|
查看次数: |
4499 次 |
最近记录: |