2013-12-17 3 views
0

Хорошо, пока я не объясню, что я пока не специалист по программированию на Android, поэтому, пожалуйста, извините меня, если я сделаю глупый вопрос.Fragment Button Issue Android

Мой код, который я пытаюсь реализовать в своем классе Java, имеет дело с кнопками и фрагментами. Я хотел бы добавить кнопку в класс фрагментов, чтобы перейти к веб-сайту. i.e (Facebook Instagram), но я не знаю, почему я получаю ошибку при активности = 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 

} 
} 

ответ

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 аннотацию

@Override 
public void onClick(View v) { 

Также удалите этот

@Override 
public void onClick(DialogInterface arg0, int arg1) { 
    // TODO Auto-generated method stub 

} 

Также удалите этот

implements OnClickListener 
+0

Это сработало! Спасибо! – Kodi

0

попробовать это

activity=getActivity(); 
0

Вот рабочий код с Raug аннотаций, хотя я никогда не использовал ни

Удалить этот импорт android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; Использование импорт android.view.View импорт 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 ; 

     } 


    } 
}; 

}