我正在尝试链接到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);
}
}
});
答案 0 :(得分:0)
好像你并没有真正关注你在做什么。你现在有这个:
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()
会导致你的应用程序崩溃。
修改强>
仅仅因为你已经接近但需要一些帮助,这应该是你的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);
}
就这么简单,你的方式过于复杂。