2017-03-08 47 views
0

我想尝试保存多个EditText输入到一个txt文件。我也希望按钮意图到另一个活动。我试着实现代码,但是当我点击按钮时,我的应用程序崩溃。 这是我的代码。将EditText保存到外部存储和单个按钮的意图

MainActivity.Java:

public class MainActivity extends AppCompatActivity { 
EditText name, numbTent, pangkat, date, time, penyelia, pegawai; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    name = (EditText) findViewById(R.id.name); 
    numbTent = (EditText) findViewById(R.id.numbTent); 
    pangkat = (EditText) findViewById(R.id.pangkat); 
    date = (EditText) findViewById(R.id.date); 
    time = (EditText) findViewById(R.id.time); 
    penyelia = (EditText) findViewById(R.id.penyelia); 
    pegawai = (EditText) findViewById(R.id.pegawai); 
} 

public void SaveInfo(View v) { 

    String state; 
    state = Environment.getExternalStorageState(); 

    if(Environment.MEDIA_MOUNTED.equals(state)) 
    { 
     File Root = Environment.getExternalStorageDirectory(); 
     File Dir = new File(Root.getAbsolutePath()+"/Semak Operasi Mampatan SRC"); 
     if(Dir.exists()) 
     { 
      Dir.mkdir(); 
     } 
     File file = new File(Dir,"AttendantInfo.txt"); 
     String Info1 = name.getText().toString(); 
     String Info2 = numbTent.getText().toString(); 
     String Info3 = pangkat.getText().toString(); 
     String Info4 = date.getText().toString(); 
     String Info5 = time.getText().toString(); 
     String Info6 = penyelia.getText().toString(); 
     String Info7 = pegawai.getText().toString(); 
     try { 
      FileOutputStream fileOutputStream = new FileOutputStream(file); 
      fileOutputStream.write(Info1.getBytes()); 
      fileOutputStream.write(Info2.getBytes()); 
      fileOutputStream.write(Info3.getBytes()); 
      fileOutputStream.write(Info4.getBytes()); 
      fileOutputStream.write(Info5.getBytes()); 
      fileOutputStream.write(Info6.getBytes()); 
      fileOutputStream.write(Info7.getBytes()); 
      fileOutputStream.close(); 
      name.setText(""); 
      numbTent.setText(""); 
      pangkat.setText(""); 
      date.setText(""); 
      time.setText(""); 
      penyelia.setText(""); 
      pegawai.setText(""); 
      Toast.makeText(getApplicationContext(),"Info Saved",Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    else 
    { 
     Toast.makeText(getApplicationContext(),"Storage not found",Toast.LENGTH_LONG).show(); 
    } 
} 
    Intent i=new Intent(MainActivity.this,ChecklistType.class); 
    startActivity(i); 
} 

activitymain.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.hp.semakoperasimampatansrc.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/title" 
    android:gravity="center" 
    android:textSize="26sp" 
    android:textStyle="bold" 
    android:id="@+id/title" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:id="@+id/name" 
    android:hint="@string/nama" 
    android:layout_marginTop="30dp" 
    android:layout_below="@+id/title" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:id="@+id/pangkat" 
    android:layout_below="@+id/numbTent" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="@string/pangkat" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:id="@+id/penyelia" 
    android:layout_below="@+id/date" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="@string/penyelia" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:id="@+id/pegawai" 
    android:layout_below="@+id/penyelia" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:hint="@string/pegawai" /> 



<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:id="@+id/numbTent" 
    android:hint="@string/NumTent" 
    android:layout_below="@+id/name" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="time" 
    android:ems="10" 
    android:id="@+id/editText" 
    android:hint="@string/time" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="datetime" 
    android:id="@+id/date" 
    android:hint="@string/date" 
    android:layout_below="@+id/pangkat" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_toLeftOf="@+id/editText" 
    android:layout_toStartOf="@+id/editText" /> 

<Button 
    android:id="@+id/title_submit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/title_submit" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_marginRight="10dp" 
    android:layout_marginEnd="10dp" 
    android:layout_marginBottom="10dp" 
    android:onClick="SaveInfo"/> 

+1

安置自己的崩溃日志,然后 –

+0

在哪里可以找到崩溃日志? – Eizzuddin

+0

@Eizzuddin看到[this](https://developer.android.com/studio/debug/am-logcat.html) –

回答

0

也许这一块是错误的:

if(Dir.exists()) 
    { 
     Dir.mkdir(); 
    } 

你想要的是,如果该目录不存在,使它。因此,当你新的.txt文件,它崩溃。

if(!Dir.exists()) 
    { 
     Dir.mkdir(); 
    } 
0

在Android 6.0及以上版本中,需要向用户请求WRITE_EXTERNAL_STORAGE。因此,您需要检查您的应用程序是否具有启动权限,以避免应用程序崩溃。喜欢的东西:

if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
Log.v(TAG,"Permission is granted"); 
//File write logic here 
return true; 

}

如果没有,那么你可以请求permissiong使用:

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); 

这将显示一个许可请求对话框给用户,用户可以决定是否允许您的应用程序获得许可。 您可以根据以下功能中的权限请求结果执行所需的操作。

@Override 
public void onRequestPermissionsResult(int requestCode, String [] permissions, int [] grantResults) { 
    switch (requestCode) { 
    case REQUEST_CODE: { 
     // If request is cancelled, the result arrays are empty. 
     if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      // permission was granted. Write file logic 
     } else { 
      // permission denied 
     } 
     return; 
    } 
} 

}