Gaurav Takte
Gaurav Takte

Reputation: 615

Android ViewPager issue

I am working on android Launcher, Where it contains three activities, The first activity is HomeActivity which contain four buttons which will be perform intent operations and the rest of the activities are blank but, At HomeActivity when I click on contact button it will display contact list, but when I choose one of the contact it shows nothing and the rest of the buttons also behave like contact button it will not jump to the OnActivityResult() method so how can I fix this problem?

Below is my code:-

MainHomeActivity.java

public class MainHomeActivity extends AppCompatActivity {

    DevicePolicyManager devicePolicyManager;
    ComponentName adminComponent;
    Button apps;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        Button lock = (Button) findViewById(R.id.button_lock);
        lock.setOnClickListener(btnListener);
        Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_OFF_TIMEOUT,15000);

        apps = (Button) findViewById(R.id.main_menu);
    }

    Button.OnClickListener btnListener = new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            adminComponent = new ComponentName(MainHomeActivity.this, AdminReceiver.class);
            devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

            if (!devicePolicyManager.isAdminActive(adminComponent)) {

                Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent);
                startActivityForResult(intent, 50);
            } else {
                devicePolicyManager.lockNow();
            }

            apps.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(MainHomeActivity.this, AppsListActivity.class);
                    startActivity(i);
                }
            });
        }
    };
}

HomeActivity.java

public class HomeActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_home_activity);

        ViewPager viewPage = (ViewPager) findViewById(R.id.viewpager);
        viewPage.setAdapter(new CustomPageAdapter(this));
    }

    public void contact(View view){
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
        if(intent.resolveActivity(getPackageManager()) != null){
            startActivityForResult(intent,10);
        }
    }


    public void audioIntent(View view){
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getParent()+"/ext_card");
        intent.setDataAndType(uri,"audio/*");
        startActivityForResult(intent,20);
    }

    public void videoIntent(View v){
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getParent()+"/ext_card");
        intent.setDataAndType(uri,"video/*");
        startActivityForResult(intent,30);
    }

    public void pdfIntent(View view){
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getParent()+"/ext.card");
        intent.setDataAndType(uri,"pdf/*");
        startActivityForResult(intent,40);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == RESULT_OK && resultCode == 10){
            Uri contactUri = data.getData();
            Intent contactIntent = new Intent(Intent.ACTION_CALL);
            contactIntent.setData(contactUri);
            startActivity(contactIntent);
        }

        if(resultCode == 20 && requestCode == RESULT_OK){
            Uri audioUri = data.getData();
            Intent audioIntent = new Intent(Intent.ACTION_VIEW);
            audioIntent.setDataAndType(audioUri,"audio/*");
            startActivity(audioIntent);
        }

        if(requestCode == RESULT_OK && resultCode == 30){
            Uri videoUri = data.getData();
            Intent videoIntent = new Intent(Intent.ACTION_VIEW);
            videoIntent.setDataAndType(videoUri,"video/*");
            startActivity(videoIntent);
        }

        if(requestCode ==  RESULT_OK && resultCode == 40){
            Uri pdfUri = data.getData();
            Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
            pdfIntent.setDataAndType(pdfUri,"pdf/*");
            startActivity(pdfIntent);
        }

    }
}

CustomPagerAdapter.java

public class CustomPageAdapter extends PagerAdapter {

    private Context mContext;

    public CustomPageAdapter(Context context){
        mContext = context;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ModelObject modelObject = ModelObject.values()[position];
        LayoutInflater inflater = LayoutInflater.from(mContext);

        ViewGroup layout = (ViewGroup) inflater.inflate(modelObject.getLayoutResId(),container,false);
        container.addView(layout);
        return layout;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public int getCount() {
        return ModelObject.values().length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        ModelObject customPagerEnum = ModelObject.values()[position];
        return mContext.getString(customPagerEnum.getTitleResId());
    }
}

This is the screenshot of the application:-

enter image description here

Upvotes: 0

Views: 90

Answers (1)

Ferdous Ahamed
Ferdous Ahamed

Reputation: 21766

You are doing wrong in your if conditions. You are trying to compare requestCode with RESULT_OK and resultCode with request codes (10,20,30 and 40) which is totally wrong.

Use:

if(requestCode == 10 && resultCode == RESULT_OK)

Instead of:

if(requestCode == RESULT_OK && resultCode == 10)

Update onActivityResult() as below:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 10 && resultCode == RESULT_OK){
        Uri contactUri = data.getData();
        Intent contactIntent = new Intent(Intent.ACTION_CALL);
        contactIntent.setData(contactUri);
        startActivity(contactIntent);
    }

    if(requestCode == 20 && resultCode == RESULT_OK){
        Uri audioUri = data.getData();
        Intent audioIntent = new Intent(Intent.ACTION_VIEW);
        audioIntent.setDataAndType(audioUri,"audio/*");
        startActivity(audioIntent);
    }

    if(requestCode == 30 && resultCode == RESULT_OK){
        Uri videoUri = data.getData();
        Intent videoIntent = new Intent(Intent.ACTION_VIEW);
        videoIntent.setDataAndType(videoUri,"video/*");
        startActivity(videoIntent);
    }

    if(requestCode == 40 && resultCode == RESULT_OK){
        Uri pdfUri = data.getData();
        Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
        pdfIntent.setDataAndType(pdfUri,"pdf/*");
        startActivity(pdfIntent);
    }

}

Hope this will help~

Upvotes: 1

Related Questions