2017-11-30 4 views
0

私は、ボタンのクリックでMainActivity - >(MainActivity)ボタンを押す - >フラグメント1 - >(フラグメント1)ボタンプレス - >フラグメントの3つの異なるフラグメントに行くアプリケーションを持っています2など私は、アプリケーションが閉じられても格納することができるフラグメントのログを作成しようとしています。 "断片1、断片2、断片3"訪問したフラグメントのログを作成

要するに、私の質問はどのようにログを作成するために各断片からのデータを覚えておくことができ、どのように私はこれを保持することができますか?アプリが殺されても、アプリのメモリにログインしてください。

public class MainActivity extends AppCompatActivity { 

Button start_button; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //get button references 
    start_button = (Button)findViewById(R.id.new_home); 


    start_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      loadFragment(new FirstFragment()); 
      start_button.setVisibility(View.GONE); 
     } 
    }); 
} 

public void loadFragment(Fragment fragment) { 
    //create fragment manager 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    //create a fragment transaction to begin the transaction and replace the fragment 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    //replace the frame layout with new fragment 
    fragmentTransaction.replace(R.id.frameLayout, fragment); 
    fragmentTransaction.commit();//save the changes 
} 

}

FRAGMENT:

public class FirstFragment extends Fragment { 

View view; 
Button firstButton; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    //inflate the layout for the fragment 
    view = inflater.inflate(R.layout.fragment_first,container,false); 

    firstButton = (Button)view.findViewById(R.id.firstButton); 

    firstButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(),"Activity Logged",Toast.LENGTH_SHORT).show(); 
      ///////////LOG FRAGMENT HERE//////////////////////////////// 
     ((MainActivity) getActivity()).loadFragment(new Fragment2()); 

     } 
    }); 
    return view; 
} 

主活性

主な活動(それらのすべては、今と同じである)の断片のいずれかと一緒に以下に示します}

+1

をあなたが断片上のファイル(テキストファイル)に書き込むことができますのonCreate – androidXP

+0

@androidXPあなたはどのように書くのですかファイルに? –

+0

私の答えを確認 – androidXP

答えて

0

使用このテキストファイルに書き込む方法(既定では、このメソッドは既定のダウンロードフォルダーに書き込みます。).Paramsは書き込みたいデータです。2.保存するディレクトリです。3.拡張子の付いたファイル名(テキストファイルの場合は.txt)

親アクティビティに

public void writeToFile(String data,String Dir,String FileName) { 

     try { 

      File dir=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+Dir); 
      Log.d(TAG,"Dir "+dir); 
      if (dir.exists() == false) { 
       dir.mkdirs(); 
      } 
      final File file = new File(dir, FileName); 
      Log.d(TAG,"File Path "+file); 
      FileOutputStream fOut = new FileOutputStream(file,true); 
      OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
      myOutWriter.append(data); 
      myOutWriter.flush(); 
      myOutWriter.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 

を、この方法を入れて、あなたの断片から、次のように呼び出す:

((MainActivity)getActivity()).writeToFile("Fragment1","MyLog","TrackLog.txt"); 
+0

ファイルへのアクセス方法を教えてください。それは電話に保存されますか? –

+0

ダウンロードフォルダに表示されます。 Astro、File Commanderなどの任意のファイルエクスプローラアプリからアクセスできます。メソッドにdirパラメータを追加すると、電話機のデフォルトのダウンロードフォルダ内に前述のフォルダが作成されます。 – androidXP

+0

私のlogcatはこれを出力として表示し、電話のどこでもファイルを見つけることができません。私が紛失しているものはありますか? D/TAG:ディレクトリ/ストレージ/エミュレート/ 0 /ダウンロード/ MyLog D/TAG:ファイルパス/storage/emulated/0/Download/MyLog/TrackLog.txt –

0

MAINACTIVITYでメソッドを作成するだけです。主なアクティビティがロードする唯一のアクティビティだからですすべての断片。

ファイルを書き込むメソッドを作成します。このメソッドは、アプリケーションのアンインストール後にアクセスできるように外部ストレージに保存されています。

MAINACTIVITYから最初のフラグメントコールメソッドに移動し、loadFragmentにログインします。

そしてMAINACTIVITYのインスタンスを取ることによって、最初から第2のフラグメントの通話記録方式への移行..

すべてについて同じ

..おかげ

EDITED

File pathToExternalStorage = Environment.getExternalStorageDirectory(); 
    //to this path add a new directory path and create new App dir (InstroList) in /documents Dir 
    File appDirectory = new File(pathToExternalStorage.getAbsolutePath() + "/documents/InstroList"); 
    // have the object build the directory structure, if needed. 
appDirectory.mkdirs(); //test to see if it is a Text file 
if (myNewFileName.endsWith(".txt")) 
{ 
     //Create a File for the output file data 
     File saveFilePath = new File (appDirectory, myNewFileName); 
     //Adds the textbox data to the file 
     try{ 
      String newline = "\r\n"; 
      FileOutputStream fos = new FileOutputStream (saveFilePath); 
      OutputStreamWriter OutDataWriter = new OutputStreamWriter(fos); 
      OutDataWriter.write("text to write"+ newline); 
      OutDataWriter.append("text to append"+ newline);/ 


      OutDataWriter.close(); 
      fos.flush(); 
      fos.close(); 
     } 
     catch(Exception e) 
    { e.printStackTrace(); } 

} 
+0

どのように外部ストレージに格納されているファイルに書き込むメソッドを記述しますか?申し訳ありませんが、私は非常に新しいです –

+0

こんにちは私の答えを確認 –

+0

私はファイルにアクセスするには?それは電話に保存されますか? –

関連する問題