鸿蒙通过Want传递参数

技术都是相互借鉴的,鸿蒙的Want类似于Android的Intent,本文将介绍Ability(Android是Activity,Ios是ViewController)直接的跳转通过Want来传递参数,一个Ability跳转到另外一个Ability,另外一个Ability操作完成后,关闭返回有时候不需要有返回值,有时候需要返回值。本文两种情况都实验了。本文模拟从AbilityTest.ets跳转到NewsAbility.ets。

AbilityTest.ets代码

import { common, Want } from '@kit.AbilityKit'
import { hilog } from '@kit.PerformanceAnalysisKit';
import { TAG } from '@ohos/hypium/src/main/Constant';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct AbilityTest {
  private context = getContext(this) as common.UIAbilityContext;

  build() {
    Column(){
      Text("Ability跳转测试")
      Button("跳转到新闻Ability").onClick(()=>{
        // context为Ability对象的成员,在非Ability对象内部调用需要
        // 将Context对象传递过去
        let wantInfo: Want = {
          deviceId: '', // deviceId为空表示本设备
          bundleName: 'com.figo.testapplication',//app.json5里面查看
          moduleName: 'entry', // module.json5里面查看
          abilityName: 'NewsAbility',//需要跳转过去的abilityName,module.json5里面查看
          parameters: {//传递的参数
            // 自定义信息
            param1: '来自AbilityTest页面的param1',
            param2: 123
          },
        };

        //1.无需获取返回值startAbility
        // this.context.startAbility(wantInfo).then(() => {
        //   let DOMAIN_NUMBER=1000;
        //   hilog.info(DOMAIN_NUMBER, TAG, 'startAbility success.');
        // }).catch((error: BusinessError) => {
        //   let DOMAIN_NUMBER=9999
        //   hilog.error(DOMAIN_NUMBER, TAG, 'startAbility failed.');
        // });


        //2.需要获取下一个ability的返回值startAbilityForResult
        let RESULT_CODE=100;//需要和传递的一致
        let DOMAIN_NUMBER=1000;
        this.context.startAbilityForResult(wantInfo).then((data) => {
          if (data?.resultCode === RESULT_CODE) {
            // 获取被调用ability,本demo是NewsAbility返回的参数
            let paramNew1 = data.want?.parameters?.paramNew1;
            let paramNew2 = data.want?.parameters?.paramNew2;
            hilog.info(0x0000, 'testTag', '接收到NewsAbility返回值为:paramNew1=%{public}s,paramNew2=%{public}d', paramNew1,paramNew2);
          }
          hilog.info(DOMAIN_NUMBER, TAG, JSON.stringify(data.resultCode) ?? '');
        }).catch((err: BusinessError) => {
          hilog.error(DOMAIN_NUMBER, TAG, `Failed to start ability for result. Code is ${err.code}, message is ${err.message}`);
        });
      })
    }
  }
}

NewsAbility.ets代码

获取AbilityTest.ets传来的参数

export default class NewsAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // 接收调用方UIAbility传过来的参数
    let funcAbilityWant = want;
    let param1 = funcAbilityWant?.parameters?.param1;
    let param2 = funcAbilityWant?.parameters?.param2;
    hilog.info(0x0000, 'testTag', '接收到参数param1=%{public}s,param2=%{public}d', param1,param2);
  }
}

返回值给AbilityTest.ets

import { common } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { TAG } from '@ohos/hypium/src/main/Constant';

@Entry
@Component
struct NewsPage {
  build() {
    Column(){
      Text("新闻列表页")
      Button("返回").onClick(()=>{
        let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
        // 1.无需返回值的情况 context为需要停止的UIAbility实例的AbilityContext
        // context.terminateSelf((err) => {
        //   if (err.code) {
        //     let DOMAIN_NUMBER = 9999;
        //     hilog.error(DOMAIN_NUMBER, TAG, `Failed to terminate self. Code is ${err.code}, message is ${err.message}`);
        //     return;
        //   }
        // })

        //2.需要返回值的情况
        const RESULT_CODE: number = 100;
        let abilityResult: common.AbilityResult = {
          resultCode: RESULT_CODE,
          want: {
            bundleName: 'com.figo.testapplication',
            moduleName: 'entry', // moduleName非必选
            abilityName: 'EntryAbility',
            parameters: {
              paramNew1: '来自AbilityTest页面',
              paramNew2: 1234567890
            },
          },
        };
        context.terminateSelfWithResult(abilityResult, (err) => {
          if (err.code) {
            let DOMAIN_NUMBER=1000;
            hilog.error(DOMAIN_NUMBER, TAG, `Failed to terminate self with result. Code is ${err.code}, message is ${err.message}`);
            return;
          }
        });
      })
    }
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
plot_confusion_matrix函数通常用于可视化混淆矩阵,其传递的参数包括混淆矩阵、类别标签、标题、颜色映射等。具体而言,plot_confusion_matrix函数通常需要传递以下参数: - confusion_matrix:混淆矩阵,通常是一个二维数组,其中每行代表一个真实类别,每列代表一个预测类别; - classes:类别标签,通常是一个列表或数组,其中每个元素代表一个类别的名称; - normalize:是否对混淆矩阵进行归一化,通常为True或False; - title:图表的标题; - cmap:颜色映射,通常是一个matplotlib colormap对象,用于指定不同类别的颜色。 例如,以下代码展示了如何使用plot_confusion_matrix函数绘制混淆矩阵: ```python from sklearn.metrics import confusion_matrix from sklearn.utils.multiclass import unique_labels import matplotlib.pyplot as plt import numpy as np def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, title=None, cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ if not title: if normalize: title = 'Normalized confusion matrix' else: title = 'Confusion matrix, without normalization' # Compute confusion matrix cm = confusion_matrix(y_true, y_pred) # Only use the labels that appear in the data classes = classes[unique_labels(y_true, y_pred)] if normalize: cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print('Confusion matrix, without normalization') print(cm) fig, ax = plt.subplots() im = ax.imshow(cm, interpolation='nearest', cmap=cmap) ax.figure.colorbar(im, ax=ax) # We want to show all ticks... ax.set(xticks=np.arange(cm.shape[1]), yticks=np.arange(cm.shape[0]), # ... and label them with the respective list entries xticklabels=classes, yticklabels=classes, title=title, ylabel='True label', xlabel='Predicted label') # Rotate the tick labels and set their alignment. plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") # Loop over data dimensions and create text annotations. fmt = '.2f' if normalize else 'd' thresh = cm.max() / 2. for i in range(cm.shape[0]): for j in range(cm.shape[1]): ax.text(j, i, format(cm[i, j], fmt), ha="center", va="center", color="white" if cm[i, j] > thresh else "black") fig.tight_layout() return ax ``` 在这个例子中,plot_confusion_matrix函数需要传递的参数包括y_true和y_pred,分别代表真实标签和预测标签,以及classes参数,代表类别标签。其他参数都有默认值,可以根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值