2017-07-09 11 views
0

私のアプリに問題があります。エラーは "UserInfoにはデフォルトコンストラクタがありません"と表示されます。
これはUserInfoのJavaコードです。エラー "UserInfoにデフォルトのコンストラクタがありません"

package com.example.christian.loginapp2; 

import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.widget.TextView; 

public class UserInfo extends Activity { 
    SharedPreferences.Editor edit; 
    SharedPreferences pref; 

    private static final String PREF_NAME = "userinfo"; 
    private static final String KEY_UNAME = "uname"; 
    private static final String KEY_PASS = "pass"; 
    private static final String KEY_FNAME = "fname"; 
    private static final String KEY_MNAME = "mname"; 
    private static final String KEY_LNAME = "lname"; 
    private static final String KEY_BDATE = "bdate"; 
    private static final String KEY_CONTACT = "contact"; 

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

     final TextView tvUsername = (TextView) findViewById(R.id.tvUsername); 
     final TextView tvPassword = (TextView) findViewById(R.id.tvPassword); 
     final TextView tvFirstname = (TextView) findViewById(R.id.tvFirstname); 
     final TextView tvMiddlename = (TextView) findViewById(R.id.tvMiddlename); 
     final TextView tvLastname = (TextView) findViewById(R.id.tvLastname); 
     final TextView tvBirthdate = (TextView) findViewById(R.id.tvBirthdate); 
     final TextView tvContact = (TextView) findViewById(R.id.tvContact); 

     String uname = pref.getString(KEY_UNAME, ""); 
     String pass = pref.getString(KEY_PASS, ""); 
     String fname = pref.getString(KEY_FNAME, ""); 
     String mname = pref.getString(KEY_MNAME, ""); 
     String lname = pref.getString(KEY_LNAME, ""); 
     String bdate = pref.getString(KEY_BDATE, ""); 
     String contact = pref.getString(KEY_CONTACT, ""); 

     tvUsername.setText(uname); 
     tvPassword.setText(pass); 
     tvFirstname.setText(fname); 
     tvMiddlename.setText(mname); 
     tvLastname.setText(lname); 
     tvBirthdate.setText(bdate); 
     tvContact.setText(contact); 

    } 

    public void cacheUserInfo(String uname, String pass, String fname, String mname, String lname, String bdate, String contact) { 
     edit.putString(KEY_UNAME, uname); 
     edit.putString(KEY_PASS, pass); 
     edit.putString(KEY_FNAME, fname); 
     edit.putString(KEY_MNAME, mname); 
     edit.putString(KEY_LNAME, lname); 
     edit.putString(KEY_BDATE, bdate); 
     edit.putString(KEY_CONTACT, contact); 
     edit.commit(); 
    } 

    public UserInfo(Context c){ 
     pref = c.getSharedPreferences(PREF_NAME, 0); 
     edit = pref.edit(); 
     edit.apply(); 
    } 
} 

私はAndroidスタジオとJavaの初心者です。

答えて

0

は、このコンストラクタを削除するには:

public UserInfo(Context c){ 
    pref = c.getSharedPreferences(PREF_NAME, 0); 
    edit = pref.edit(); 
    edit.apply(); 
} 

そしてonCreate()方法で(あなただけの好みを編集していない、読んでいるので、必要な唯一のものである、)この行を移動:

pref = c.getSharedPreferences(PREF_NAME, 0); 
+0

このコンストラクタを削除してください。メソッドではありません。 –

+1

さて、そうです。私はちょうど一般的な用語*メソッド*を使用しました。私は関数、ルーチン、リスナー、およびコンストラクタを区別して使用します。 –

+1

しかし、彼らは通常の方法とは少し違っているので、コンストラクタを使うのはまだ良いです.... :) –

関連する問題