【问题标题】:How to open a new activity from a fragment using a switch case?如何使用开关盒从片段中打开新活动?
【发布时间】:2017-04-08 13:29:55
【问题描述】:

您好,我制作的开关盒有问题。我想从片段中打开一个新活动。

这是我的开关:

@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 打开的 Activity

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());
        }
    });
}
}

任何帮助将不胜感激

【问题讨论】:

  • 您是否收到错误消息?没有开关盒还能用吗?

标签: java android android-activity switch-statement fragment


【解决方案1】:

EventBus 在这里真的很有帮助。你可以参考我现有的example来解决你的问题。

【讨论】:

    【解决方案2】:

    Start Activity 代码看起来很完美。

    可能是Null Pointer ExceptionReadFragment Activity 代码的下一行。

     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();
    }
    

    【讨论】:

    • 感谢您的帮助,我已添加此内容,但没有任何影响。我认为php代码可能有问题。
    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多