我正在尝试以编程方式调用项目内的“主页”按钮和另一个按钮。应用程序可以正常编译,但是当我点击应调用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
函数;)
答案 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