2017-04-08 39 views
-1

嗨我遇到了我所做的開關盒的問題。我想從一個片段中打開一個新的活動。如何使用開關盒從片段中打開新的活動?

這是我的開關:

@Override 
public void onClick(View v) 
{ 
    switch (v.getId()) 
    { 
     //When the change password button is pressed... 
     case R.id.btn_chg_password: 
      showDialog(); 
      break; 
     //When the Logout but is pressed... 
     case R.id.btn_logout: 
      logout(); 
      break; 
     //When the write diary button is pressed... 
     case R.id.btn_write: 
      goToWriteDiary(); 
      break; 
     //When the Read Diary button is pressed... 
     case R.id.btn_read: 
      Intent intent=new Intent(getActivity(), ReadFragment.class); 
      startActivity(intent); 
      break; 
    } 
} 

這裏是我想上的按鈕打開活動= btn_read

import android.content.SharedPreferences; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

import java.util.ArrayList; 
import java.util.Arrays; 

import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.Response; 
import retrofit2.Retrofit; 
import retrofit2.converter.gson.GsonConverterFactory; 

public class ReadFragment extends AppCompatActivity 
{ 
private RecyclerView recyclerView; 
private ArrayList<Diary> data; 
private DataAdapter adapter; 
private SharedPreferences pref; 

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

private void initViews() 
{ 
    recyclerView = (RecyclerView)findViewById(R.id.recycler_view); 
    recyclerView.setHasFixedSize(true); 
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(layoutManager); 

    String unique_id = pref.getString(Constants.UNIQUE_ID,""); 
    loadJSON(unique_id); 
} 

private void loadJSON(String unique_id) 
{ 
    Gson gson = new GsonBuilder() 
      .setLenient() 
      .create(); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create(gson)) 
      .build(); 

    ServerRequest request = new ServerRequest(); 

    Diary diary = new Diary(); 
    diary.setUnique_id(unique_id); 
    request.setOperation(Constants.CREATE_DIARY_OPERATION); 

    RequestInterface requestInterface = retrofit.create(RequestInterface.class); 
    Call<DiaryResponse> call = requestInterface.getDiary(); 
    call.enqueue(new Callback<DiaryResponse>() 
    { 
     @Override 
     public void onResponse(Call<DiaryResponse> call, Response<DiaryResponse> response) 
     { 
      DiaryResponse diaryResponse = response.body(); 
      data = new ArrayList<>(Arrays.asList(diaryResponse.getDiary())); 
      adapter = new DataAdapter(data); 
      recyclerView.setAdapter(adapter); 
     } 

     @Override 
     public void onFailure(Call<DiaryResponse> call, Throwable t) 
     { 
      Log.d("Error",t.getMessage()); 
     } 
    }); 
} 
} 

任何幫助,將不勝感激

+0

您是否收到錯誤消息?它沒有開關櫃的情況下工作嗎? –

回答

0

EventBus是真的很有幫助這裏。你可以參考我現有的example來解決你的問題。

0

開始活動代碼看起來很完美。

可能是Null Pointer Exception在代碼ReadFragment活動的下面一行。

String unique_id = pref.getString(Constants.UNIQUE_ID,""); 

PREF沒有初始化,所以在onCreate方法初始化。

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_read); 
    pref= getSharedPreferences("your_pref_name", Context.MODE_PRIVATE); 
    initViews(); 
} 
+0

感謝您的幫助,我已經添加了這個,但它沒有改變。我認爲php代碼可能存在問題。 – Sallow

+0

如果有任何錯誤,然後顯示我的日誌。 –