2017-03-28 5 views
0

Gifログは、私はいくつかの有効期限を保存するアプリを持っていると私は<strong>SharedPreferences</strong>を使用して別のアクティビティにデータを渡すためにしようとしています

こんにちは、

をオブジェクトに。 .gif「追加」ボタンが押されているときにデータが正しく記録されますが、データを保存してランディングページに正しく表示する必要がある場合は、このランダムを追加します。null保存されたデータ。

このヌル値はどこに追加されていますか?

フィードバックやその他の関連コードが必要な場合は、私に迷惑をかけないでください。 FormActivity

FormActivity

import static tech.destinum.recorderis.adapters.FormAdapter.FORM_PREFERENCES; 

public class Form extends AppCompatActivity { 

private UserProfile mUserProfile; 
private DBHelper mDBHelper; 
private Auth0 mAuth0; 
private Context mContext; 
private RecyclerView mRecyclerView; 
private ArrayList<Document> mArrayList; 
private FormAdapter mAdapter; 
private String soat, rtm, src, str, to; 
private static final String PREFERENCES = "Preferences"; 
private static final String TAG = "Form Activity"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_form); 

    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view_form); 

    mArrayList = new ArrayList<>(); 
    mArrayList.add(new Document(R.string.doc_soat, 0)); 
    mArrayList.add(new Document(R.string.doc_rtm, 1)); 
    mArrayList.add(new Document(R.string.doc_src, 2)); 
    mArrayList.add(new Document(R.string.doc_str, 3)); 
    mArrayList.add(new Document(R.string.doc_tao, 4)); 
    mAdapter = new FormAdapter(mContext, mArrayList); 

    mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
    mRecyclerView.setHasFixedSize(true); 

    mRecyclerView.setAdapter(mAdapter); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.form_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()){ 
     case R.id.confirmation: 
      createUser(); 
      Intent intent = new Intent(getApplicationContext(), Home.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finish(); 
      break; 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

//TODO: New method for premium version 
//free version 
private void createUser() { 

    mAuth0 = new Auth0(getString(R.string.auth0_client_id), getString(R.string.auth0_domain)); 
    // The process to reclaim an UserProfile is preceded by an Authentication call. 
    AuthenticationAPIClient aClient = new AuthenticationAPIClient(mAuth0); 
    aClient.tokenInfo(CredentialsManager.getCredentials(this).getIdToken()) 
      .start(new BaseCallback<UserProfile, AuthenticationException>() { 
       @Override 
       public void onSuccess(final UserProfile payload) { 
        Form.this.runOnUiThread(new Runnable() { 
         public void run() { 
          mUserProfile = payload; 
          mDBHelper = new DBHelper(getApplicationContext()); 

          SharedPreferences mSP = getSharedPreferences(FORM_PREFERENCES, Context.MODE_PRIVATE); 

          for (int i = 0; i < 6; i++){ 
           switch (i){ 
            case 0: 
             soat += mSP.getString("soat", ""); 
             Log.d(TAG, "Soat:" + soat); 

             break; 
            case 1: 
             rtm += mSP.getString("rtm", ""); 
             Log.d(TAG, "RTM:" + rtm); 

             break; 
            case 2: 
             src += mSP.getString("src", ""); 
             Log.d(TAG, "SRC:" + src); 

             break; 
            case 3: 
             str += mSP.getString("str", ""); 
             Log.d(TAG, "STR:" + str); 

             break; 
            case 4: 
             to += mSP.getString("to", ""); 
             Log.d(TAG, "TO:" + to); 
             break; 

           } 
          } 


          String name = mUserProfile.getName(); 

          if (mUserProfile.getEmail() == null){ 
           SharedPreferences mSharedPreferences = getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE); 
           String email = mSharedPreferences.getString("email", null); 
           mDBHelper.createNewUser(name, 0, 0, email, soat, rtm, str, src, to); 
          } else { 
           String email = mUserProfile.getEmail(); 
           mDBHelper.createNewUser(name, 0, 0, email, soat, rtm, str, src, to); 
          } 
         } 
        }); 
       } 

       @Override 
       public void onFailure(AuthenticationException error) { 
        Form.this.runOnUiThread(new Runnable() { 
         public void run() { 
          Toast.makeText(Form.this, R.string.profile_request_failed, Toast.LENGTH_SHORT).show(); 
         } 
        }); 
       } 
      }); 
} 

}

FormAdapter

public class FormAdapter extends RecyclerView.Adapter<FormAdapter.ViewHolder> { 

public static final String FORM_PREFERENCES = "FormPreferences"; 
private Context mContext; 
private ArrayList<Document> mDocuments; 
private ArrayList<Dates> list = new ArrayList<>(); 

public FormAdapter(Context mContext, ArrayList<Document> mDocuments) { 
    this.mContext = mContext; 
    this.mDocuments = mDocuments; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.format_form, parent, false)); 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 
    final Document document = mDocuments.get(position); 
    holder.mTitle.setText(document.getName()); 
    holder.mTitleExpanded.setText(document.getName()); 
    holder.mEditText.setTag(R.id.date_et, position); 
    holder.mButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int position = (int) holder.mEditText.getTag(R.id.date_et); 
      Log.d("pos", String.valueOf(position)); 

      SharedPreferences mSP = v.getContext().getSharedPreferences(FORM_PREFERENCES, Context.MODE_PRIVATE); 
      SharedPreferences.Editor mEditor = mSP.edit(); 

      String data = holder.mEditText.getText().toString(); 

      switch (position){ 
       case 0: 
        list.add(new Dates(0, data)); 
        Log.d("SOAT", data); 
        mEditor.putString("soat", data); 
        mEditor.commit(); 

        break; 
       case 1: 

        list.add(new Dates(1, data)); 
        Log.d("RTM", data); 
        mEditor.putString("rtm", data); 
        mEditor.commit(); 
        break; 
       case 2: 
        list.add(new Dates(2, data)); 
        Log.d("SRC", data); 
        mEditor.putString("src", data); 
        mEditor.commit(); 
        break; 
       case 3: 
        list.add(new Dates(3, data)); 
        Log.d("STR", data); 
        mEditor.putString("str", data); 
        mEditor.commit(); 
        break; 
       case 4: 
        list.add(new Dates(4, data)); 
        Log.d("TO", data); 
        mEditor.putString("to", data); 
        mEditor.commit(); 
        break; 
      } 
     } 
    }); 
} 

@Override 
public int getItemCount() { 
    return mDocuments != null ? mDocuments.size(): 0; 
} 

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 

    public TextView mTitle, mTitleExpanded; 
    public Button mButton; 
    public EditText mEditText; 
    public ImageView mImageView; 

    private int originalHeight = 0; 
    private boolean isViewExpanded = false; 
    private ConstraintLayout mConstraintLayout; 
    private DateWatcher mDateWatcher; 

    public ViewHolder(View view) { 
     super(view); 
     view.setOnClickListener(this); 

     mConstraintLayout = (ConstraintLayout) view.findViewById(R.id.expanded); 
     mTitle = (TextView) view.findViewById(R.id.name_title_tv); 
     mTitleExpanded = (TextView) view.findViewById(R.id.name_title_tv_expanded); 
     mButton = (Button) view.findViewById(R.id.add_button); 
     mEditText = (EditText) view.findViewById(R.id.date_et); 
     mImageView = (ImageView) view.findViewById(R.id.imageView_up); 

     mDateWatcher = new DateWatcher(mEditText); 
     mEditText.addTextChangedListener(mDateWatcher); 


    } 

答えて

1

soat...
​​3210のための初期設定がないようで
とログが文字列追加しようです、私たちが見ることができる.GIFで soat += mSP.getString("soat", "");

soat, rtm, src, str, toすべてnull
あなたは、文字列soat, rtm, src, str, to上の他の操作を示してもらえますか?

私の意見はデバッグです:soat, rtm, src, str, toにいくつかの "単語"を与え、何が起こっているのか見てみてください。

関連する問題

 関連する問題