2017-05-20 16 views
0

私は3つのタブを持つAndroidアプリを持っています。私は、クリックしたときに資産フォルダからPDFを開く(インテントを介して)CardViewを挿入したいと思います。ボタンのassetsフォルダからPDFを開くタブフラグメントを押す

今はタップしたときにトーストを表示するタブの1つにボタンがあるので、それが機能することはわかっています。ボタンをタップすると、代わりにassetsフォルダのPDFが開くようにするにはどうしたらいいですか?

私はstackoverflowで1トンの答えを読んだが、それらのどれも私のために働いていないようだ。私はMainActivity.javaファイルと他の3つのTabFragment.javaファイルがあり、私が正しいことをしていないことがあるためと思われます。それとも、まったく違う何か、私は知らない。

public class MainActivity extends AppCompatActivity { 

private static final String TAG = "MainActivity"; 

private SectionsPageAdapter mSectionsPageAdapter; 

private ViewPager mViewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Log.d(TAG, "onCreate: Starting."); 

    mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.container); 
    setupViewPager(mViewPager); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(mViewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Tab1Fragment(), "TAB1"); 
    adapter.addFragment(new Tab2Fragment(), "TAB2"); 
    adapter.addFragment(new Tab3Fragment(), "TAB3"); 
    viewPager.setAdapter(adapter); 
}} 

Tab1Fragment.javaコードは次のとおりです:

public class Tab1Fragment extends Fragment { 


private static final String TAG = "Tab1Fragment"; 

private Button btnTEST; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.tab1_fragment, container, false); 
    btnTEST = (Button) view.findViewById(R.id.btnTEST); 

    btnTEST.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show(); 




     } 
    }); 

    return view; 

}} 

とtab1_fragment.xmlは、任意の助けをいただければ幸いです

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"></LinearLayout> 

    <android.support.v7.widget.CardView 
     android:id="@+id/cardView1" 
     android:layout_width="fill_parent" 
     android:layout_height="75dp" 
     android:layout_gravity="center" 
     android:layout_margin="5dp" 
     android:onClick="cardView1" 
     card_view:cardCornerRadius="2dp" 
     card_view:contentPadding="10dp"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:textSize="25sp" 
     android:text="Tab1" 
     android:layout_marginTop="40dp" 
     android:id="@+id/textTab1"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnTEST" 
     android:text="TESTBTN 1"/> 
</RelativeLayout> 

ある

は、ここに私のMainActivity.javaコードです。

答えて

0

ボタンのクリックイベントでこのコードを入力してください。

btnTEST.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     Toast.makeText(getActivity(), "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show(); 

     File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+"/pdfname.pdf"); 
     if (file.exists()) 
     { 
      Intent intent=new Intent(Intent.ACTION_VIEW); 
      Uri uri = Uri.fromFile(file); 
      intent.setDataAndType(uri, "application/pdf"); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     try 
     { 
      startActivity(intent); 
     } 
     catch(ActivityNotFoundException e) 
     { 
      Toast.makeText(getActivity(), "No Application available to view pdf", Toast.LENGTH_LONG).show(); 
     } 
     } 


    } 
}); 

希望、それは私が(私はあなたのコード内のトーストが表示されるでしょうかどうかを確認するためにそれをコメントアウト)私のトーストメッセージの行の後にコードを追加

+0

...お手伝いを致します。あなたのコードのトーストメッセージはボタンを押すと表示されますが、残念ながら他のことはしません。私はAssetManagerとgetAssets();というAssetManagerフォルダにあるファイルを読み込むことについての答えをここで思い出しています。 –

+0

動作しているかどうか?動作していない場合は、問題が何であるか教えてください。 –

+0

偶然、全部を入力する前にenterを押してください。とにかく、自分のトーストメッセージの行の後にコードを追加しました(コード内のトーストが表示されるかどうかをチェックするためにコメントアウトしました)。あなたのコードのトーストメッセージはボタンを押すと表示されますが、残念ながら他のことはしません。私はAssetManagerとgetAssets();というAssetManagerというフォルダからファイルを読み込むことについての答えをここで思い出しています。 –

関連する問題