Skip to content

Commit

Permalink
给XPageActivity增加getPage的方法获取指定的Fragment,方便Activity调用Fragment的方法获取数据。
Browse files Browse the repository at this point in the history
  • Loading branch information
xuexiangjys committed Jun 3, 2018
1 parent c9af7b7 commit 73127da
Show file tree
Hide file tree
Showing 11 changed files with 304 additions and 77 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,6 @@ dependencies {
// implementation 'com.github.xuexiangjys.XPage:xpage-lib:2.2.0'
// annotationProcessor 'com.github.xuexiangjys.XPage:xpage-compiler:2.2.0'

implementation 'com.github.xuexiangjys.XUtil:xutil-core:1.1.2'
implementation 'com.github.xuexiangjys.XUtil:xutil-core:1.1.3'

}
36 changes: 23 additions & 13 deletions app/src/main/java/com/xuexiang/xpagedemo/ComplexActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import android.widget.Button;

import com.xuexiang.xpage.base.XPageActivity;
import com.xuexiang.xpage.enums.CoreAnim;
import com.xuexiang.xpagedemo.fragment.DateReceiveFragment;
import com.xuexiang.xpagedemo.fragment.TestFragment;
import com.xuexiang.xpagedemo.fragment.TabAFragment;
import com.xuexiang.xpagedemo.fragment.TabBFragment;
import com.xuexiang.xutil.tip.ToastUtils;

import butterknife.BindView;
import butterknife.ButterKnife;
Expand All @@ -33,23 +33,33 @@ protected int getLayoutId() {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButterKnife.bind(this);
openPage(TestFragment.PAGE_NAME, null, CoreAnim.none);
openPage(TabAFragment.class, null);
}


@OnClick({R.id.btn_1, R.id.btn_2})
@OnClick({R.id.btn_1, R.id.btn_2, R.id.btn_3, R.id.btn_4})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_1:
changePage(TestFragment.PAGE_NAME, null, CoreAnim.none);
changePage(TabAFragment.class, null);
break;
case R.id.btn_2:
Bundle params = new Bundle();
params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, false);
int id = (int) (Math.random() * 100);
params.putString(DateReceiveFragment.KEY_EVENT_NAME, "事件" + id);
params.putString(DateReceiveFragment.KEY_EVENT_DATA, "事件" + id + "携带的数据");
changePage("数据接收", params, CoreAnim.none);
changePage(TabBFragment.class, null);
break;
case R.id.btn_3:
TabAFragment tabAFragment = getPage(TabAFragment.class);
if (tabAFragment != null) {
ToastUtils.toast(tabAFragment.getData());
} else {
ToastUtils.toast("页面还未加载!");
}
break;
case R.id.btn_4:
TabBFragment tabBFragment = getPage(TabBFragment.class);
if (tabBFragment != null) {
ToastUtils.toast(tabBFragment.getData());
} else {
ToastUtils.toast("页面还未加载!");
}
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.xuexiang.xpagedemo.fragment;

import android.widget.TextView;

import com.xuexiang.xpage.annotation.Page;
import com.xuexiang.xpage.base.XPageFragment;
import com.xuexiang.xpage.enums.CoreAnim;
import com.xuexiang.xpage.utils.TitleBar;
import com.xuexiang.xpagedemo.R;

import butterknife.BindView;

/**
* @author xuexiang
* @since 2018/6/3 下午10:13
*/
@Page(name = "TabA", anim = CoreAnim.none)
public class TabAFragment extends XPageFragment {

@BindView(R.id.tv_content)
TextView tvContent;

@Override
protected TitleBar initTitleBar() {
return null;
}

/**
* 布局的资源id
*
* @return
*/
@Override
protected int getLayoutId() {
return R.layout.fragment_test;
}

/**
* 初始化控件
*/
@Override
protected void initViews() {
tvContent.setText("这里是 " + getPageName() + " 页面");
}

/**
* 初始化监听
*/
@Override
protected void initListeners() {

}

public String getData() {
return "这是TabA的数据";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.xuexiang.xpagedemo.fragment;

import android.widget.TextView;

import com.xuexiang.xpage.annotation.Page;
import com.xuexiang.xpage.base.XPageFragment;
import com.xuexiang.xpage.enums.CoreAnim;
import com.xuexiang.xpage.utils.TitleBar;
import com.xuexiang.xpagedemo.R;

import butterknife.BindView;

/**
* @author xuexiang
* @since 2018/6/3 下午10:22
*/
@Page(name = "TabB", anim = CoreAnim.none)
public class TabBFragment extends XPageFragment {

@BindView(R.id.tv_content)
TextView tvContent;

@Override
protected TitleBar initTitleBar() {
return null;
}

/**
* 布局的资源id
*
* @return
*/
@Override
protected int getLayoutId() {
return R.layout.fragment_test;
}

/**
* 初始化控件
*/
@Override
protected void initViews() {
tvContent.setText("这里是 " + getPageName() + " 页面");
}

/**
* 初始化监听
*/
@Override
protected void initListeners() {

}

public String getData() {
return "这是TabB的数据";
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
package com.xuexiang.xpagedemo.fragment;

import android.widget.TextView;

import com.xuexiang.xpage.annotation.Page;
import com.xuexiang.xpage.base.XPageFragment;
import com.xuexiang.xpagedemo.R;

import butterknife.BindView;

/**
* @author xuexiang
* @date 2018/1/7 下午11:27
*/
@Page(name = TestFragment.PAGE_NAME)
public class TestFragment extends XPageFragment {
public final static String PAGE_NAME = "测试页面";
@BindView(R.id.tv_content)
TextView tvContent;

/**
* 布局的资源id
*
Expand All @@ -26,7 +33,7 @@ protected int getLayoutId() {
*/
@Override
protected void initViews() {

tvContent.setText(getPageName());
}

/**
Expand All @@ -36,4 +43,5 @@ protected void initViews() {
protected void initListeners() {

}

}
26 changes: 26 additions & 0 deletions app/src/main/res/layout/activity_complex.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,32 @@

</FrameLayout>

<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@android:color/darker_gray"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="获取A页面的数据" />

<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="获取B页面的数据" />

</LinearLayout>

<View
android:layout_width="match_parent"
android:layout_height="2dp"
Expand Down
12 changes: 10 additions & 2 deletions app/src/main/res/layout/fragment_test.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />

</LinearLayout>
2 changes: 1 addition & 1 deletion xpage-lib/src/main/java/com/xuexiang/xpage/PageConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,6 @@ public static PageInfo getPageInfo(Class<?> clazz) {
* @return
*/
public static Page getPage(Class<?> clazz) {
return Utils.checkNotNull(clazz.getAnnotation(Page.class), "Page == null");
return Utils.checkNotNull(clazz.getAnnotation(Page.class), "Page == null,请检测页面是否漏加 @Page 进行修饰!");
}
}
Loading

0 comments on commit 73127da

Please sign in to comment.