简体   繁体   中英

Activity not called from intent in onActivityCreated

I have button in my Tab1.java, by clicking the button, it will call another class say Custom.java, But i am facing error:

"Intent cannot be resolved to a type"

I searched a lot but did not find any helpful post regarding this. Please Help me !

Tab1.java

public class Tab1 extends Fragment
{
    ListView lv;
    int FIRST_OPTION = 1;
    int SECOND_OPTION = 2;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    Button b = (Button) getView().findViewById(R.id.button4);
    registerForContextMenu(b);

    Button bi = (Button) getView().findViewById(R.id.button5);
    registerForContextMenu(bi);

    Button setting = (Button) getView().findViewById(R.id.setting);
    setting.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            startActivity(new Intent(getActivity(), Custom.class));             
        }
    });

    b.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            // TODO Auto-generated method stub
            menu.add(0, FIRST_OPTION, 0, "Activate");

                }
    });
bi.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            // TODO Auto-generated method stub

            menu.add(0, SECOND_OPTION, 0, "Activate");
        }
    });

}

@Override
public boolean onContextItemSelected(MenuItem item) {

    int itemId = item.getItemId();
    if(itemId == FIRST_OPTION){
        //Normal_Mode nm = new Normal_Mode();
        //nm.activateNormal(getApplicationContext());
    Toast.makeText(this.getActivity(), "Normal Mode Activated", Toast.LENGTH_SHORT).show();

    return true;

    }
    else if(itemId == SECOND_OPTION){
        //Silent_Mode sm = new Silent_Mode();
        //sm.activateSilent(getApplicationContext());
        Toast.makeText(this.getActivity(), "Silent Mode Activated", Toast.LENGTH_SHORT).show();

        return true;            
    }
    return super.onContextItemSelected(item);
 }
    @Override
    public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,
        @Nullable Bundle savedInstanceState) {
        View view =inflater.inflate(R.layout.profile,container,false);
        return view;
    }
}

Custom.java

public class Custom extends Activity{

    private SeekBar mediaVlmSeekBar = null;
    private AudioManager audioManager = null;
    private boolean mphoneisVib;
    Ringtone ringtone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  
        setContentView(R.layout.custom_sett);
        initControls();

        audioManager= (AudioManager) getSystemService(AUDIO_SERVICE);

        setButtonClickListener();

        Button b = (Button) findViewById(R.id.button6);
        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent inte = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
                inte.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, 
                        RingtoneManager.TYPE_RINGTONE);
                //String title= ringtone.getTitle(this);
            inte.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Sle");

                startActivityForResult(inte, 5);
            }           
        });     
    }

   /********************* Code For VIbration *******************************/

    private void setButtonClickListener() {
        // TODO Auto-generated method stub
        ToggleButton tb = (ToggleButton) findViewById(R.id.toggleButton1);
        tb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if(mphoneisVib){
                    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                mphoneisVib=false;
            Toast toast=    Toast.makeText(Custom.this, "Vibration Off !",
                    Toast.LENGTH_SHORT);
                toast.show();
                }
                else{

                    audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

                    mphoneisVib=true;

                    Toast toast=Toast.makeText(Custom.this, "Vibration On !",
                    Toast.LENGTH_SHORT);
                    toast.show();                   
                }                   
            }
        });
    }
    /********************          End        *************************/

    /******************** Code For Volume Seekbar *********************/
    private void initControls() {
        // TODO Auto-generated method stub

        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
        mediaVlmSeekBar = (SeekBar) findViewById(R.id.seekBar1);
        mediaVlmSeekBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 
        //Set the progress with current Media Volume 
        mediaVlmSeekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));

        try { mediaVlmSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {    
            public void onStopTrackingTouch(SeekBar arg0) {         }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub

                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);                   
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {                 
            } 
        });

        }
        catch (Exception e) 
        {e.printStackTrace(); } 
    }
             /***********************  End  ***************************/

Hye there, Kindly try this way.

setting.setOnClickListener(new OnClickListener() {

 @Override
 public void onClick(View arg0) {
   /startActivity(new Intent(getActivity(), Custom.class));   
    Intent intent = new Intent((Tab1)getActivity(), Custom.class);
    (Tab1)getActivity().startActivity(intent);    

    }
});

There's some quick tips that may solve the problem:

1) Did you make sure that yourt Custom activity is registered in the android manifest?

2) Don't call the startActivity directly in your fragment, use an interface to communicate with the activity that is holding your fragment and do the startActivity there, this way is more clean.

3) Don't use class names like Custom or Tab1 use CustomActivity and TabFragment , follow the android code style guidelines.

Code guidelines

Communication Fragment-Activity

Keep in mind that if some day, your boss or someone tells you "Well, now we're going to do a version for Tablet devices" this code is going to need a lot of changes, that's why you've to communicate your fragments with your activities, and perform the logic there.

Tell me if you have any problem, or if the issue doesn't get resolved.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM