2017-05-15 94 views
0

我在android启动器上工作,它包含三个活动,第一个活动是HomeActivity,其中包含四个按钮,这些按钮将执行意向操作,其余活动为空,但在HomeActivity单击时联系人按钮它会显示联系人列表,但是当我选择其中一个联系人时,它什么也没有显示,其余的按钮也像联系人按钮一样,它不会跳转到OnActivityResult()方法,所以我该如何解决这个问题?Android ViewPager问题

下面是我的代码: -

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()); 
    } 
} 

这是应用程序的截图: -

enter image description here

+0

我已经提供onClick属性到xml文件中的每个按钮。 –

+0

为什么Android Studio标签?这不是一个关于该工具的问题。 – EJoshuaS

回答

1

你在你的if条件做错了。您正试图将requestCodeRESULT_OKresultCode与请求代码(10,20,30 and 40)进行比较,这是完全错误的。

用途:

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

相反的:如下

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

更新onActivityResult()

@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); 
    } 

} 

希望这会有所帮助〜

+0

谢谢兄弟,它适合我@Ferdous艾哈迈德 –

+0

我的荣幸:) – FAT