传递片段的语境

时间:2016-08-22 08:47:31

标签: java android android-fragments navigation-drawer android-navigation-drawer

我有一个基于导航抽屉的应用程序,Home Class extends AppCompatActivity我在导航抽屉的不同选项卡和代表"的HomeFragment之间切换。 HOME"标签 。 另一方面,我做了一个" ReadRSS"使用Context作为参数的构造函数的类。 我想实例化" ReadRSS"在我的HomeFragment中,如果我使用keywrod,我得到一个错误说:

ReadRSS (android.content.Context)         in ReadRSS cannot be applied 
to      (com.example.essat.essat.HomeFragment)

如果我尝试传递getAcitivty()getContext(),我会收到错误消息:

unreachable statement

这是我的代码以获取更多详细信息:

public class ReadRSS extends AsyncTask<Void,Void,Void> {

Context context;
ProgressDialog progressDialog;

public ReadRSS (Context context){
    this.context=context;
    progressDialog = new ProgressDialog(context);
    progressDialog.setMessage("Loading ...");
}
// Other Methods ... 
}

HomeFragment:

public class HomeFragment extends Fragment {


public HomeFragment() {
    // Required empty public constructor
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_home, container, false);

    ReadRSS readRSS = new ReadRSS(// I Pass them all Here );
    readRSS.execute();

}

}

在我的家庭课程中,我使用以下代码调用片段:

fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.Home_Container,new HomeFragment());
    fragmentTransaction.commit();

并在其他选项卡的Switch语句中重新使用它,以便在应用程序启动时显示主页片段,如果您更改了选项卡,则可以使用&#34; HOME&#34;标签

我希望你能帮助我解决这个错误或提出另一种方法。

先谢谢。

4 个答案:

答案 0 :(得分:3)

哦,当然 - 那是因为你在ReadRSS初始化之前有返回声明。

将订单更改为:

app.get('/video', function (req, res) {


  var readStream = fs.createReadStream('video.mjpeg');
  res.writeHead(200, {'Content-Type': 'multipart/x-mixed-  replace;boundary=ThisString'});

  readStream.on("data", (chunk) => {
    res.write(chunk, 'binary');

    setTimeout(function () {
      res.write('ThisString');
    }, 200);
    console.log("Writing to client");
  });

  readStream.on("end", () => {
    readStream.destroy();
    res.end();
    console.log("End of data"); 
  });
});

没关系。

答案 1 :(得分:0)

你有这条线:

ReadRSS readRSS = new ReadRSS();

但是你的ReadRSS类要求参数中的args?或者你有另一个你没有包含在这里的空构造函数吗?

你在哪里调用getContext()导致错误无法访问的语句?无法访问的语句意味着执行路径无法到达该行...即,它上面有一个返回语句,或者在它上面抛出异常。

答案 2 :(得分:0)

Goltsev Eugene解决的问题  我只需要在ReadRSS实例化和return语句之间切换顺序。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
// Inflate the layout for this fragment
ReadRSS readRSS = new ReadRSS(// I Pass them all Here );
readRSS.execute();

return inflater.inflate(R.layout.fragment_home, container, false);
}

谢谢大家。

答案 3 :(得分:-1)

您可以在onAttach()

中获取上下文
context = getActivity().getApplicationContext(); 

到ReadRSS课程。

ReadRSS readRSS = new ReadRSS(context);