好的,在我解释之前我还不是Android编程方面的专家,所以如果我提出一个愚蠢的问题,请原谅我。
我正在尝试在Java类中实现的代码处理按钮和碎片。我想在Fragment Class中放一个按钮,以便进入一个网站。即(Facebook Instagram)但我不知道为什么我在activity = this时收到错误;我希望有人帮助我,并向我解释(如果可能的话)为什么会这样,以及我将来可以做些什么来防止这种错误再次发生。
这是Java代码:
package info.androidhive.slidingmenu;
import android.app.Activity;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
public class NetworksActivity extends Fragment implements OnClickListener{
ImageButton imgButtonInstagram;
ImageButton imgButtonFacebook;
Activity activity;
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.networks_layout);
}
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle saedInstanceState) {
View rootView = inflater.inflate(R.layout.networks_layout, parent, false);
activity = this;
imgButtonInstagram = (ImageButton)rootView.findViewById(R.id.imgBtnInsta);
imgButtonFacebook = (ImageButton)rootView.findViewById(R.id.imgBtnFace);
imgButtonFacebook.setOnClickListener(listener);
imgButtonInstagram.setOnClickListener(listener);
return rootView;
}
private View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()){
case (R.id.imgBtnInsta):
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://instagram.com/m4lvip")));
break ; // add here
case (R.id.imgBtnFace):
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/")));
break ;// add here
}
}
};
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:2)
activity = this
这不是指活动上下文因为NetworksActivity extends Fragment
。
使用
activity = getActivity()
。
getActivity()
返回此片段当前与之关联的活动。
你的进口也不对
删除此
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
使用
import android.view.View
import android.view.View.OnClickListener;
还使用@Override Annotation
@Override
public void onClick(View v) {
同时删除此
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
同时删除此
implements OnClickListener
答案 1 :(得分:0)
试试这个
activity=getActivity();
答案 2 :(得分:0)
这是带有Raug注释的工作代码,虽然我没有使用
删除它 import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; 使用 导入android.view.View import android.view.View.OnClickListener;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
public class MiscFragment extends Fragment {
ImageButton imgButtonTwitter;
ImageButton imgButtonFacebook;
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_misc, container,
false);
imgButtonTwitter = (ImageButton)rootView.findViewById(R.id.iButton1);
imgButtonFacebook = (ImageButton)rootView.findViewById(R.id.iButton2);
imgButtonFacebook.setOnClickListener(listener);
imgButtonTwitter.setOnClickListener(listener);
return rootView;
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case (R.id.iButton1):
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://instagram.com/")));
break ;
case (R.id.iButton2):
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/")));
break ;
}
}
};
}