我正在尝试创建Facebook应用程序的链接。如果它不存在,它应该在浏览器中转到Facebook。
问题是,当我点击那里的按钮时,它会给我这个错误:
不幸的是,A已停止
我不知道该怎么处理@SuppressWarnings("null")
和uri = null
。
帮助。
package com.example.a;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button dadclink;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton() {
dadclink = (Button) findViewById(R.id.dadclink);
dadclink.setOnClickListener(new OnClickListener() {
@SuppressWarnings("null")
@Override
public void onClick(View arg0) {
String uri = null;
if (!uri.contains("https://www.facebook.com/")) {
String natgeo = "natgeo";
String uri1 = "fb://Page/" + natgeo;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(uri1));
startActivity(intent);
} else {
String natgeo = "natgeo";
String uri1 = "https://www.facebook.com/" + natgeo;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1));
startActivity(i);
}
}
});
}
}
已编辑
package com.example.a;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button dadclink;
protected String uri;
protected String uri1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton() {
dadclink = (Button) findViewById(R.id.dadclink);
dadclink.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (!uri.contains("https://www.facebook.com/")) {
String natgeo = "natgeo";
String uri = "fb://Page/" + natgeo;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(uri));
startActivity(intent);
} else {
String natgeo = "natgeo";
String uri1 = "https://www.facebook.com/" + natgeo;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1));
startActivity(i);
}
}
});
}
}
再次编辑
public void addListenerOnButton() {
dadclink = (Button) findViewById(R.id.dadclink);
dadclink.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String uri = "";
if (!uri.contains("https://www.facebook.com/")) {
String natgeo = "natgeo";
String uri1 = "fb://Page/" + natgeo;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1));
startActivity(intent);
} else {
String natgeo = "natgeo";
String uri1 = "https://www.facebook.com/" + natgeo;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1));
startActivity(i);
}
}
});
你似乎并没有真正注意到自己在做什么。你现在有这个:
dadclink.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (!uri.contains("https://www.facebook.com/")) {
String natgeo = "natgeo";
String uri = "fb://Page/" + natgeo;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
} else {
String natgeo = "natgeo";
String uri1 = "https://www.facebook.com/" + natgeo;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1));
startActivity(i);
}
}
});
但是你已经将你的uri字符串设置为
protected String uri;
这意味着,当你第一次点击时,由于你没有在任何地方设置你的uri,你会点击这条线
if(!uri.contains("https://www.facebook.com/")){
您将尝试执行null.contains("https://www.facebook.com/");
。但显然null不支持任何类型的函数调用,换句话说,null.contains()
会导致你的应用程序与NPE一起崩溃。
编辑
仅仅因为你正在接近,但需要一些帮助来结束,这应该是你的onClick方法
@Override
public void onClick(View arg0) {
String uri = "https://www.facebook.com/natgeo";
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(i);
}
就这么简单,你太复杂了。