嗨我遇到了我所做的开关盒问题。我想从片段中打开一个新活动。
这是我的开关:
@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;
}
}
这是我希望用Button = 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)
答案 1 :(得分: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();
}