2017-04-08 77 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

如果有任何错误,然后显示我的日志。 –