片段按钮问题Android

时间:2013-12-17 03:38:29

标签: java android button android-fragments

好的,在我解释之前我还不是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

}
}

3 个答案:

答案 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 ;

        }


    }
};

}