在React Native中以编程方式访问主页按钮

时间:2018-09-25 11:53:08

标签: java android react-native home-button

我正在尝试以编程方式调用项目内的“主页”按钮和另一个按钮。应用程序可以正常编译,但是当我点击应调用Home按钮时,会收到以下错误消息:

  

尝试调用虚拟方法'void   android.content.Context.startActivity(android.content.Intent)'   空对象引用

这是我的代码(仅此而已):

import android.app.Activity;
import android.content.Intent; 
import android.content.Context;

public class ClassName extends ReactContextBaseJavaModule {
  private Context context;

  @ReactMethod
  public void minApp() {
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
  }
}

我在做什么错了?

解决方案:

由于我的应用程序使用本机反应,因此Java文件中桥接方法中的代码应如下所示:

import android.content.Intent; 
import android.content.Context;

public class ClassName extends ReactContextBaseJavaModule {

  @ReactMethod
  public void minApp() {
    Context context = getReactApplicationContext();
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
  }
}

使用此方法,我们可以在需要的任何地方分配Home button函数;)

2 个答案:

答案 0 :(得分:2)

public void openLauncher(Context context) {
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startMain);
}

您可以使用此功能打开启动器。

答案 1 :(得分:1)

似乎您尚未初始化d3.json("data/buildings.json").then(function(data){ data.forEach(function(d){ d.height = +d.height; }); console.log(data); var svg = d3.select("#chart-area").append("svg") .attr("width", 400) .attr("height", 400); var rectangles = svg.selectAll("rect") .data(data); rectangles.enter() .append("rect") .attr("x", function(d,i){ return (i * 50) + 25; }) .attr("y", 25) .attr("width", 40) .attr("height",function(d){ return d.height; }) .attr("fill", "grey") }) 。确保在调用context

之前启动它